【问题标题】:How to call a soap webservice using google apps script如何使用谷歌应用程序脚本调用肥皂网络服务
【发布时间】:2017-05-06 01:12:16
【问题描述】:

我正在使用谷歌应用程序脚本与开源平台 OpenClinica 一起工作,我正在尝试使用以下代码使用他们的肥皂网络服务:

  var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
  +"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://openclinica.org/ws/studySubject/v1\" xmlns:bean=\"http://openclinica.org/ws/beans\">"
  +"<soapenv:Header>"
  +"<wsse:Security soapenv:mustUnderstand=\"1\" xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">"
  +"<wsse:UsernameToken wsu:Id=\"UsernameToken-27777511\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\">"
  +"<wsse:Username>xxx</wsse:Username>"
  +"<wsse:Password>yyy</wsse:Password>"
  +"</wsse:UsernameToken>"
  +"</wsse:Security>"
  +"</soapenv:Header>"
  +"<soapenv:Body>"
  +"<v1:importRequest>"
  +"<ODM>"
  +"<ClinicalData StudyOID=\"S_PROSPER2\" MetaDataVersionOID=\"v1.0.0\">"
  +"<SubjectData SubjectKey=\"SS_UU001\">"
  +"<StudyEventData StudyEventOID=\"SE_QUESW4\" StudyEventRepeatKey=\"0\">"
  +"<FormData FormOID=\"F_RANDANDQUEST_11\">"
  +"<ItemGroupData ItemGroupOID=\"IG_RANDA_UNGROUPED\" ItemGroupRepeatKey=\"1\" TransactionType=\"Insert\">"
  +"<ItemData ItemOID=\"I_RANDA_RAND01\" Value=\"1\"/>"
  +"<ItemData ItemOID=\"I_RANDA_RAND02\" Value=\"1\"/>"
  +"<ItemData ItemOID=\"I_RANDA_RAND03\" Value=\"1\"/>"
  +"<ItemData ItemOID=\"I_RANDA_RAND04\" Value=\"1\"/>"
  +"</ItemGroupData>"
  +"</FormData>"
  +"</StudyEventData>"
  +"</SubjectData>"
  +"</ClinicalData>"
  +"</ODM>"
  +"</v1:importRequest>"
  +"</soapenv:Body>"
  +"</soapenv:Envelope>";


  var options =
      {
        "method" : "post",
        "contentType" : "text/xml",
        "payload" : xml
      };

  var result = UrlFetchApp.fetch("http://89.221.253.174:8080/OpenClinica-ws/ws/data/v1/dataWsdl.wsdl", options);

由于某种原因,我收到此错误消息:

请求失败 http://89.221.253.174:8080/OpenClinica-ws/ws/data/v1/dataWsdl.wsdl 返回代码 404(第 147 行,文件“代码”)

所以错误实际上在这一行:

var result = UrlFetchApp.fetch("http://89.221.253.174:8080/OpenClinica-ws/ws/data/v1/dataWsdl.wsdl", options);

如果我尝试使用 soapUI 工具中的相同代码,一切正常:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://openclinica.org/ws/data/v1">
   <soapenv:Header>
    <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken wsu:Id="UsernameToken-27777511" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:Username>xxx</wsse:Username>
    <wsse:Password>yyy</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
   </soapenv:Header>
   <soapenv:Body>
     <v1:importRequest>
          <ODM>
                <ClinicalData StudyOID="S_PROSPER2" MetaDataVersionOID="v1.0.0">
                    <SubjectData SubjectKey="SS_UU001">
                        <StudyEventData StudyEventOID="SE_QUESW4" StudyEventRepeatKey="0">
                            <FormData FormOID="F_RANDANDQUEST_11">
                                <ItemGroupData ItemGroupOID="IG_RANDA_UNGROUPED" ItemGroupRepeatKey="1" TransactionType="Insert">
                                    <ItemData ItemOID="I_RANDA_RAND01" Value="1"/>
                                    <ItemData ItemOID="I_RANDA_RAND02" Value="1"/>
                                    <ItemData ItemOID="I_RANDA_RAND03" Value="1"/>
                                    <ItemData ItemOID="I_RANDA_RAND04" Value="1"/>
                                </ItemGroupData>
                            </FormData>
                        </StudyEventData>
                    </SubjectData>
                </ClinicalData>
            </ODM>      
     </v1:importRequest>
   </soapenv:Body>
</soapenv:Envelope>

【问题讨论】:

    标签: javascript api soap google-apps-script wsdl


    【解决方案1】:

    只需在您的选项中添加一个额外的参数,如下所示, muteHttpExceptions : true

    var options =
          {
            "method" : "post",
            "contentType" : "text/xml",
            "payload" : xml,
            muteHttpExceptions:true
          };
    

    【讨论】:

    • 这不是解决方案!
    • 您对解决方案的期望是什么?我已经用应用脚本测试了你的代码,它的工作原理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多