Google Apps SOAP Запрос, похоже, отправляет запрос GET вместо POST - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь отправить простой запрос SOAP, который, как мне известно, работает через тестирование через SOAPUI, но кажется, что скрипт Google Apps ниже игнорирует метод POST и отправляет как получение, потому что ответ возвращается с GET страница WSDL.

var webservice = 'https://ws.campaigner.com/2013/01/contactmanagement.asmx?WSDL';
//Various XML parsing.  
var xml = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="https://ws.campaigner.com/2013/01">'
+'   <soap:Header/>'
+'   <soap:Body>'
+'      <ns:ImmediateUpload>'
+'         <!--Optional:-->'
+'        <ns:authentication>'
+'            <!--Optional:-->'
+'            <ns:Username>user</ns:Username>'
+'            <!--Optional:-->'
+'            <ns:Password>pass</ns:Password>'
+'         </ns:authentication>'
+'         <ns:UpdateExistingContacts>true</ns:UpdateExistingContacts>'
+'         <ns:TriggerWorkflow>false</ns:TriggerWorkflow>'
+'         <!--Optional:-->'
+'         <ns:contacts>'
+'            <!--Zero or more repetitions:-->'
+'            <ns:ContactData>'
+'               <!--Optional:-->'
+'               <ns:ContactKey>'
+'                  <!--<ns:ContactId>?</ns:ContactId>-->'
+'                  <!--Optional:-->'
+'                  <ns:ContactUniquedentifier>email</ns:ContactUniqueIdentifier>'
+'               </ns:ContactKey>'
+'               <!--Optional:-->'
+'               <ns:EmailAddress IsNull="false">email</ns:EmailAddress>'
+'               <!--Optional:-->'
+'               <ns:FirstName IsNull="true"></ns:FirstName>'
+'               <!--Optional:-->'
+'               <ns:LastName IsNull="true"></ns:LastName>'
+'               <!--Optional:-->'
+'               <ns:PhoneNumber IsNull="true"></ns:PhoneNumber>'
+'               <!--Optional:-->'
+'               <ns:Fax IsNull="true"></ns:Fax>'
+'               <ns:Status>Subscribed</ns:Status>'
+'               <ns:MailFormat>Both</ns:MailFormat>'
+'               <ns:IsTestContact>false</ns:IsTestContact>'
+'               <!--Optional:-->'
+'               <ns:CustomAttributes>'
+'                  <!--Zero or more repetitions:-->'
+'                  <ns:CustomAttribute Id="9553008" IsNull="false">08/19/2020 4:00 PM</ns:CustomAttribute>'
+'               </ns:CustomAttributes>'
+'               <!--Optional:-->'
+'               <ns:AddToGroup>'
+'                  <!--Zero or more repetitions:-->'
+'                  <!--<ns:int>?</ns:int>-->'
+'               </ns:AddToGroup>'
+'               <!--Optional:-->'
+'               <ns:RemoveFromGroup>'
+'                  <!--Zero or more repetitions:-->'
+'                  <!--<ns:int>?</ns:int>-->'
+'               </ns:RemoveFromGroup>'
+'            </ns:ContactData>'
+'         </ns:contacts>'
+'         <!--Optional:-->'
+'         <ns:globalAddToGroup>'
+'            <!--Zero or more repetitions:-->'
+'            <!--<ns:int>?</ns:int>-->'
+'         </ns:globalAddToGroup>'
+'         <!--Optional:-->'
+'         <ns:globalRemoveFromGroup>'
+'            <!--Zero or more repetitions:-->'
+'            <!--<ns:int>?</ns:int>-->'
+'         </ns:globalRemoveFromGroup>'
+'      </ns:ImmediateUpload>'
+'   </soap:Body>'
+'</soap:Envelope>';

var options = {   
  headers:{
       method : 'post',
       payload  : xml,
       contentType : 'text/xml; charset=utf-8',
      'SOAPAction' : '"https://ws.campaigner.com/2013/01/ImmediateUpload"',
       muteHttpExceptions : true
  },

};  


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

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

Я новичок в использовании скриптов Google Apps.

1 Ответ

3 голосов
/ 23 января 2020

Ваш объект параметров не отформатирован правильно. Следует читать как:

var options = {
    method:"POST",
    contentType: "text/xml; charset=utf-8",
    muteHttpExceptions:true,
    headers:{
        "SOAPAction": "https://ws.campaigner.com/2013/01/ImmediateUpload"
    },
    payload:xml
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...