【问题标题】:Premature end of file error in XML RequestXML 请求中的文件过早结束错误
【发布时间】:2020-05-19 15:54:21
【问题描述】:

由于某种原因,我在尝试创建对 Salesforce 的简单登录请求时收到此错误。

这在邮递员中完全可以正常工作,但是,当我尝试转换为 Google Apps 脚本时,它似乎会产生“文件过早结束”错误。


  var myHeaders = {

    "Content-Type": 'text/xml',
    SOAPAction: '/',
    Cookie: "BrowserId=sB-PspOVEeqEttdm-K56tw",


  }



/*myHeaders.append("Content-Type", "text/xml");
myHeaders.append("SOAPAction", "\"\"");
myHeaders.append("Cookie", "BrowserId=sB-PspOVEeqEttdm-K56tw");*/


var raw = "<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\">\n    <Header>\n    </Header>\n    <Body>\n        <login xmlns=\"urn:enterprise.soap.sforce.com\">\n            <username>xx@xx.com</username>\n            <password>xx</password>\n        </login>\n    </Body>\n</Envelope>";
var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow',
  muteHttpExceptions : true
};

var response = UrlFetchApp.fetch("https://test.salesforce.com/services/Soap/c/48.0/", requestOptions)
  //.then(response => response.text())
  //.then(result => logger.log(result))
  //.catch(error => logger.log('error', error)); 


Logger.log(response.getContentText())```



【问题讨论】:

    标签: javascript google-apps-script soap xmlhttprequest salesforce


    【解决方案1】:

    这个修改怎么样?

    修改点:

    • 我认为在这种情况下,Cookie: "BrowserId=sB-PspOVEeqEttdm-K56tw" 可能不需要。
    • bodyredirect 的属性不包含在 UrlFetchApp.fetch 的参数中。

    修改脚本:

    var myHeaders = {
      SOAPAction: '/',
    }
    var raw = "<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\">\n    <Header>\n    </Header>\n    <Body>\n        <login xmlns=\"urn:enterprise.soap.sforce.com\">\n            <username>xx@xx.com</username>\n            <password>xx</password>\n        </login>\n    </Body>\n</Envelope>";
    var requestOptions = {
      method: 'POST',
      headers: myHeaders,
      contentType: "text/xml",
      payload: raw,
      muteHttpExceptions : true
    };
    var response = UrlFetchApp.fetch("https://test.salesforce.com/services/Soap/c/48.0/", requestOptions);
    Logger.log(response.getContentText())
    

    注意:

    • 在本次修改中,假设SOAPActionrawhttps://test.salesforce.com/services/Soap/c/48.0/的值是正确的。

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 2011-12-20
      相关资源
      最近更新 更多