AutoIt
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
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