Swift
Swift
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 Swift Downloads
func chilkatTest() {
var success: Bool = 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.
// --------------------------------------------------------------------------------
let http = CkoHttp()!
// 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.
let xml = CkoXml()!
xml.tag = "soapenv:Envelope"
xml.addAttribute(name: "xmlns:soapenv", value: "http://schemas.xmlsoap.org/soap/envelope/")
xml.addAttribute(name: "xmlns:ser", value: "http://service.sunat.gob.pe")
xml.updateChildContent(tagPath: "soapenv:Header", value: "")
xml.updateChildContent(tagPath: "soapenv:Body|ser:sendBill|fileName", value: "20601523999-03-B001-00000002.zip")
xml.updateChildContent(tagPath: "soapenv:Body|ser:sendBill|contentFile", value: "UEsDBBQ ... AAAAA==")
// Alternatively, load the XML from a file. (Remove this line if you wish to build the XML as shown above.)
success = xml.loadFile(path: "qa_data/soap/envio_sunat_peru.xml")
var strXml: String? = xml.getXml()
http.setRequestHeader(name: "SOAPAction", value: "urn:sendBill")
var endPoint: String? = "https://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService"
let resp = CkoHttpResponse()!
success = http.httpStr(verb: "POST", url: endPoint, bodyStr: strXml, charset: "utf-8", contentType: "text/xml", response: resp)
if success == false {
print("\(http.lastErrorText!)")
return
}
var responseStatusCode: Int = resp.statusCode.intValue
// You may wish to verify that the responseStatusCode equals 200...
print("Response Status Code: \(responseStatusCode)")
// You may examine the exact HTTP header sent with the POST like this:
print("LastHeader:")
print("\(http.lastHeader!)")
// Examine the XML returned by the web service:
print("XML Response:")
let xmlResp = CkoXml()!
xmlResp.load(xmlData: resp.bodyStr)
print("\(xmlResp.getXml()!)")
// Use this online tool to generate parsing code from response XML:
// Generate Parsing Code from XML
}