Ниже приведен мой рабочий скрипт Google Apps SOAP API envelop call.Он работает, чтобы подключиться нормально, и, как вы можете видеть ниже, он возвращает ответ, но мой ответ закодирован.Как / где добавить немного, чтобы сделать Base64decode, чтобы увидеть XML, который возвращается вместо строки символов?Я совершенно новичок в SOAP API и все еще новичок в скриптах приложений.Спасибо!
function getData() {
var webservice = ‘https://someplace.com/services/stuff/’;
var xml = '<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://someurlhere.com">'
+ '<soapenv:Header/>'
+ '<soapenv:Body>'
+ '<ser:getReportXML soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> '
+ '<in0 xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">' + userid + '</in0> '
+ '<in1 xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">' + password + '</in1> '
+ '<in2 xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">' + startDate + '</in2> '
+ '<in3 xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">' + endDate + '</in3> '
+ '</ser:getReportXML> '
+ '</soapenv:Body>'
+' </soapenv:Envelope>'
var options = {
headers: {"SOAPAction" :"https://someplace.com/services/stuff/"},
method: "post",
contentType: "text/xml",
payload: xml,
muteHttpExceptions: true,
};
var serviceaddress = webservice;
var response = UrlFetchApp.fetch(serviceaddress, options);
Logger.log(response);
};
Возвращает закодированную строку в ответе, но я хочу увидеть фактические результаты XML:
[19-01-31 11:46:02:122 PST] <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:getReportXMLResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1=" http://someurlhere.com "><getReportXMLReturn xsi:type="soapenc:base64Binary" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">WMui8xyxcPQXmZgSerdPd94bwWxGsAMgdmVyc2lvbj0iFRxlTSerdgiPz4NCg0KPQFET0NUW
Я пытаюсь получить вывод ответа, похожий наxml, а не строка символов
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE ETRANS PUBLIC "-//Something//ethings DTD//EN" "https://www.url.com/dtd/ethings_1_0.dtd">
<ETRANS>
<USER ID="AABB1122" USER_NAME="Smith, John" DATE="2019-02-01 09:41:45" DEPT_ID=""/>
</ETRANS>
Итак, я выяснил, что мой ответ имеет закодированное тело XML, но в нем также есть все эти дополнительные биты в ответе перед фактическими закодированными данными, поэтомуСбой декодера, так как он не знает, что делать с этим битом, показанным здесь в начале ответа
[19-01-31 11:46:02:122 PST] <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:getReportXMLResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1=" http://someurlhere.com "><getReportXMLReturn xsi:type="soapenc:base64Binary" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
и еще несколькими битами внизу, которые похожи на некоторое закрытие вышеуказанных битов.Есть ли что-то, что мне нужно передать в моем запросе, чтобы запрос SOAP возвращал только символьную строку, а не эти дополнительные биты, которые выглядят так, будто они помещают «конверт» вокруг закодированных данных, которые он отправляет обратно?