Как позвонить в веб-сервис по сценарию приложения Google - PullRequest
0 голосов
/ 23 мая 2018

Я создал веб-сервис в SAP и попытался вызвать этот веб-сервис SOAP из скрипта приложения Google.

Этот WS находится в BASIC-аутентификации, в ответ на переменную я получаю тот же wsdl, который я передаю при вводе,Я столкнулся с проблемой в системном вызове внутреннего сервера "Получен неподдерживаемый тип контента:" "Кто-то может мне помочь?

var user = 'user';
var pwd = 'pwd';
var webservice = 'http://xx.xxx.xx.xx:xxxx/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zdemo_google_ws/100/zdemo_google_ws/zdemo_google_ws?sap-client=100.wsdl';
function readData() {  

//Clean up anything currently on the spreadsheet  
SpreadsheetApp.getActiveSheet().clear();  

try {  

//Various XML parsing.  
var xml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:soap:functions:mc-style\">"
+"<soapenv:Header/>"
+"   <soapenv:Body>"
+"     <urn:ZDemoGoogle>"
+"         <ItWebs>"
+"            <item>"
+"               <Protocol></Protocol>"
+"               <Tasktype></Tasktype>"
+"               <EntryId></EntryId>"
+"               <Account></Account>"
+"               <Mandt></Mandt>"
+"               <Host></Host>"
+"               <Port></Port>"
+"               <Destination></Destination>"
+"               <Path></Path>"
+"               <Counter></Counter>"
+"               <Calltime></Calltime>"
+"               <ExecutionTi></ExecutionTi>"
+"               <DataSend></DataSend>"
+"               <DataSendTi></DataSendTi>"
+"               <DataReceive></DataReceive>"
+"               <DataReceiveTi></DataReceiveTi>"
+"            </item>"
+"         </ItWebs>"
+"      </urn:ZDemoGoogle>"
+"   </soapenv:Body>"
+"</soapenv:Envelope>"

var options = {  
  headers: {  
    "Authorization": "Basic " + Utilities.base64Encode(user + ':' + pwd),
    "method" : "post",
    "contentType" : "text/xml",
    "payload" : xml,
    "muteHttpExceptions":true
  },  
};  

//UrlFetchApp is a powerful built-in library from Google  

var serviceaddress =  webservice ;
var response = UrlFetchApp.fetch(serviceaddress, options);

1 Ответ

0 голосов
/ 24 мая 2018

Чтобы использовать UrlFetchApp.fetch(), необходимо изменить option вашего скрипта.Так как насчет этой модификации?

От:

var options = {  
  headers: {  
    "Authorization": "Basic " + Utilities.base64Encode(user + ':' + pwd),
    "method" : "post",
    "contentType" : "text/xml",
    "payload" : xml,
    "muteHttpExceptions":true
  },  
};

До:

var options = {  
  headers: {"Authorization": "Basic " + Utilities.base64Encode(user + ':' + pwd)},
  method: "post",
  contentType: "text/xml",
  payload: xml,
  muteHttpExceptions: true,
};

Ссылка:

Если это не было прямым решением вашей проблемы, извините.

...