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