Sample code for 30+ languages & platforms
AutoIt

SOAP sendBill Call to sunat.gob.pe

See more HTTP Misc Examples

Demonstrates how to make a SOAP call to sunat.gob.pe for the sendBill method.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

;  This example requires the Chilkat API to have been previously unlocked.
;  See Global Unlock Sample for sample code.

;  --------------------------------------------------------------------------------
;  Also see Chilkat's Online WSDL Code Generator
;  to generate code and SOAP Request and Response XML for each operation in a WSDL.
;  --------------------------------------------------------------------------------

$oHttp = ObjCreate("Chilkat.Http")

;  The SOAP XML will look like this:
;  <?xml version="1.0" encoding="utf-8"?>
;  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.sunat.gob.pe">
;      <soapenv:Header/>
;      
;      <soapenv:Body>
;          <ser:sendBill>
;              <fileName>20601523999-03-B001-00000002.zip</fileName>
;              <contentFile>UEsDBBQ ... AAAAA==</contentFile>
;          </ser:sendBill>
;      </soapenv:Body>
;  </soapenv:Envelope>

;  Build the above SOAP XML.
$oXml = ObjCreate("Chilkat.Xml")
$oXml.Tag = "soapenv:Envelope"
$oXml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
$oXml.AddAttribute("xmlns:ser","http://service.sunat.gob.pe")
$oXml.UpdateChildContent "soapenv:Header",""
$oXml.UpdateChildContent "soapenv:Body|ser:sendBill|fileName","20601523999-03-B001-00000002.zip"
$oXml.UpdateChildContent "soapenv:Body|ser:sendBill|contentFile","UEsDBBQ ... AAAAA=="

;  Alternatively, load the XML from a file.  (Remove this line if you wish to build the XML as shown above.)
$bSuccess = $oXml.LoadXmlFile("qa_data/soap/envio_sunat_peru.xml")

Local $strXml = $oXml.GetXml()

$oHttp.SetRequestHeader "SOAPAction","urn:sendBill"

Local $sEndPoint = "https://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService"

$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpStr("POST",$sEndPoint,$strXml,"utf-8","text/xml",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

Local $iResponseStatusCode = $oResp.StatusCode

;  You may wish to verify that the responseStatusCode equals 200...
ConsoleWrite("Response Status Code: " & $iResponseStatusCode & @CRLF)

;  You may examine the exact HTTP header sent with the POST like this:
ConsoleWrite("LastHeader:" & @CRLF)
ConsoleWrite($oHttp.LastHeader & @CRLF)

;  Examine the XML returned by the web service:
ConsoleWrite("XML Response:" & @CRLF)
$oXmlResp = ObjCreate("Chilkat.Xml")
$oXmlResp.LoadXml($oResp.BodyStr)
ConsoleWrite($oXmlResp.GetXml() & @CRLF)

;  Use this online tool to generate parsing code from response XML: 
;  Generate Parsing Code from XML