调用soap webservice时,prolog中不允许使用内容

时间:2017-05-04 12:38:06

标签: xml web-services soap google-apps-script wsdl

我使用以下代码获取结果但由于某种原因我收到此错误:第1行出错:prolog中不允许使用内容。 (第134行,文件"代码"),在这种情况下是

  

var xmlResult = XmlService.parse(result).getRootElement();

var xml = "<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>yyyy</wsse:Username>"
        +"<wsse:Password>xxxxx</wsse:Password>"
        +"</wsse:UsernameToken>"
        +"</wsse:Security>"
       +"</soapenv:Header>"
       +"<soapenv:Body>"
          +"<v1:listAllByStudyRequest>"
             +"<bean:studyRef>"
                +"<bean:identifier>PROSPER2</bean:identifier>"
             +"</bean:studyRef>"
          +"</v1:listAllByStudyRequest>"
       +"</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/studySubject/v1/studySubjectWsdl.wsdl", options);

      var xmlResult = XmlService.parse(result).getRootElement();


      Logger.log(xmlResult);

任何想法为什么这不起作用,我使用谷歌应用程序脚本来执行此代码;

1 个答案:

答案 0 :(得分:0)

您可以参考此thread。检查xml文件是否有像这样的垃圾字符 。它还声明here此错误可能与实际XML内容之前的字节顺序标记(BOM)有关。您需要解析返回的String并丢弃BOM,因此SAXParser可以正确处理文档。