Quantcast
Channel: AutoIt v3 - General Help and Support
Viewing all articles
Browse latest Browse all 12506

How to send SOAP Envelope request and receive response

$
0
0

How to process SOAP Envelope request by sending it to webservice and receive response? I know there is some build in function called "new SoapClient()" in PHP language which doesn't require to build full envelope as it do it by itself with only some required params. Unfortunatelly there is no such a function "SoapClient" in Autoit. I decided to first understand how does request and response works with full xml envelopes.

 

I have example of SOAP Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:even="http://events.dpdinfoservices.dpd.com.pl/">    <soapenv:Header/>    <soapenv:Body>       <even:getEventsForCustomerV1>          <limit>10</limit>          <authDataV1>             <channel>clientChannel</channel>             <login>user</login>             <password>userPassword</password>          </authDataV1>       </even:getEventsForCustomerV1>    </soapenv:Body> </soapenv:Envelope>

with example of SOAP Response

Plain Text         
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">    <S:Body>       <ns2:getEventsForCustomerV1Response xmlns:ns2="http://events.dpdinfoservices.dpd.com.pl/">          <return>             <confirmId>6/YZj7qK8rzMimm3VRYyjQ==</confirmId>             <eventsList>                <businessCode>170101</businessCode>                <country>PL</country>                <depot>BIA</depot>                <description>Wydanie przesyłki do doręczenia</description>                <eventData1>eventData1</eventData1>                <eventData2>eventData2</eventData2>                <eventData3>eventData3</eventData3>                <eventTime>2011-11-16T12:43:41</eventTime>                <id>14123075</id>                <objectId>46181630</objectId>                <operationType>INSERT</operationType>                <packageReference/>                <parcelReference>TEL000069708012</parcelReference>                <waybill>NG148497H090</waybill>             </eventsList>             <eventsList>                <businessCode>170101</businessCode>                <country>PL</country>                <depot>KTW</depot>                <description>Wydanie przesyłki do doręczenia</description>                <eventData1>eventData1</eventData1>                <eventData2>eventData2</eventData2>                <eventData3>eventData3</eventData3>                <eventTime>2011-11-16T12:48:25</eventTime>                <id>14123116</id>                <objectId>46183717</objectId>                <operationType>INSERT</operationType>                <packageReference/>                <parcelReference>MATERIAŁY FIRMOWE</parcelReference>                <waybill>01765003987175</waybill>             </eventsList>          </return>       </ns2:getEventsForCustomerV1Response>    </S:Body> </S:Envelope>

How to send this kind of request via AutoIT and how to receive response as string/table ?

 

I want to notice that I have study this post:

"Simple SOAP Example" by MVPs from:

http://www.autoitscript.com/forum/topic/45904-soap-example/

 

I have made some changes and in results I have receive this code:

AutoIt         
; Initialize COM error handler $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") $objHTTP = ObjCreate("Microsoft.XMLHTTP") $objReturn = ObjCreate("Msxml2.DOMdocument.3.0") ; Create the SOAP Envelope $strEnvelope = "" & _ '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:even="http://events.dpdinfoservices.dpd.com.pl/">' & _ '   <soapenv:Header/>' & _ '   <soapenv:Body>' & _ '      <even:getEventsForCustomerV1>' & _ '         <limit>10</limit>' & _ '         <authDataV1>' & _ '            <channel>clientChannel</channel>' & _ '            <login>user</login>' & _ '            <password>userPassword</password>' & _ '         </authDataV1>' & _ '      </even:getEventsForCustomerV1>' & _ '   </soapenv:Body>' & _ '</soapenv:Envelope>' ; Make the SOAP call $objHTTP.send ($strEnvelope) ; Get the return envelope $strReturn = $objHTTP.responseText ConsoleWrite("Return : " & @CR & $strReturn & @CR & @CR) Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"COM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _              "err.description is: " & @TAB & $oMyError.description & @CRLF & _              "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _              "err.number is: " & @TAB & $HexNumber & @CRLF & _              "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _              "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _              "err.source is: " & @TAB & $oMyError.source & @CRLF & _              "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _              "err.helpcontext is: " & @TAB & $oMyError.helpcontext _             ) SetError(1) ; to check for after this function returns Endfunc

I have edited required values in envelope such a <limit></limit> and <authDataV1></authDataV1> but in results I have received 2 errors (attached)

 

Any idea what could be wrong?

 

All help will be much apprieciated.

Attached Thumbnails

  • error1.png
  • error2.png

Viewing all articles
Browse latest Browse all 12506

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>