javascript - XML 请求中的文件提前结束错误

标签 javascript google-apps-script soap xmlhttprequest salesforce

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

这与 postman 中的工作方式完全一样,但是,当我尝试转换为 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><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5129291129297f323e3c" rel="noreferrer noopener nofollow">[email protected]</a></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())```



最佳答案

这个修改怎么样?

修改点:

  • 我认为在这种情况下,可能不需要 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><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="91e9e9d1e9e9bff2fefc" rel="noreferrer noopener nofollow">[email protected]</a></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/ 是正确的。

引用:

关于javascript - XML 请求中的文件提前结束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61895331/

相关文章:

javascript - 在 Leaflet Map 中单击时,首先加载标记,然后加载每个弹出窗口的数据

javascript - 如何向 HTML/Jquery 选项卡添加图标以在 Episys Symitar 中使用

firebase - 使用 Google Apps 脚本将 Google Sheets 数据保存到 Firebase 中

google-apps-script - 如何通过应用程序脚本在特定文件夹中创建电子表格

ios - 在 Soap iOS 中为服务器发送 Api 请求数组

javascript - 对日期数组与字符串混合进行排序

javascript - 按属性对数组中的 javascript 对象进行排序(angularjs 过滤器)

arrays - 电子表格 - Google App Script [字符串拆分功能]

python - SUDS 信封无效

c# - 从 SOAP 消息(没有 WSDL)生成 Web 服务接口(interface)?