Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loXml
LOCAL lcStrXml
LOCAL lcEndPoint
LOCAL loResp
LOCAL lnResponseStatusCode
LOCAL loXmlResp

lnSuccess = 0

* 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.
* --------------------------------------------------------------------------------

loHttp = CreateObject('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.
loXml = CreateObject('Chilkat.Xml')
loXml.Tag = "soapenv:Envelope"
loXml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
loXml.AddAttribute("xmlns:ser","http://service.sunat.gob.pe")
loXml.UpdateChildContent("soapenv:Header","")
loXml.UpdateChildContent("soapenv:Body|ser:sendBill|fileName","20601523999-03-B001-00000002.zip")
loXml.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.)
lnSuccess = loXml.LoadXmlFile("qa_data/soap/envio_sunat_peru.xml")

lcStrXml = loXml.GetXml()

loHttp.SetRequestHeader("SOAPAction","urn:sendBill")

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

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpStr("POST",lcEndPoint,lcStrXml,"utf-8","text/xml",loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loXml
    RELEASE loResp
    CANCEL
ENDIF

lnResponseStatusCode = loResp.StatusCode

* You may wish to verify that the responseStatusCode equals 200...
? "Response Status Code: " + STR(lnResponseStatusCode)

* You may examine the exact HTTP header sent with the POST like this:
? "LastHeader:"
? loHttp.LastHeader

* Examine the XML returned by the web service:
? "XML Response:"
loXmlResp = CreateObject('Chilkat.Xml')
loXmlResp.LoadXml(loResp.BodyStr)
? loXmlResp.GetXml()

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

RELEASE loHttp
RELEASE loXml
RELEASE loResp
RELEASE loXmlResp