Javascript 如何使用GoogleApps脚本调用soap Web服务

Javascript 如何使用GoogleApps脚本调用soap Web服务,javascript,api,soap,google-apps-script,wsdl,Javascript,Api,Soap,Google Apps Script,Wsdl,我正在使用google apps脚本与开源平台OpenClinica合作,并尝试使用以下代码使用他们的soap web服务: 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/st

我正在使用google apps脚本与开源平台OpenClinica合作,并尝试使用以下代码使用他们的soap web服务:

  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);
如果我尝试使用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>

xxx
yyy

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

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

这不是解决办法!您对解决方案的期望是什么?我已经用应用程序脚本测试了你的代码,它运行正常。
var options =
      {
        "method" : "post",
        "contentType" : "text/xml",
        "payload" : xml,
        muteHttpExceptions:true
      };