Xojo Plugin
Xojo Plugin
palena.sii.cl getToken SOAP Request
See more SII Chile Examples
Demonstrates how to call getToken SOAP request at palena.sii.clChilkat Xojo Plugin Downloads
Dim success As Boolean
success = False
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Create the XML to be signed...
Dim xmlToSign As New Chilkat.Xml
xmlToSign.Tag = "getToken"
// This is the seed obtained from palena.sii.cl getSeed
xmlToSign.UpdateChildContent "item|Semilla","033878794660"
Dim gen As New Chilkat.XmlDSigGen
gen.SigLocation = "getToken"
gen.SigLocationMod = 0
gen.SigNamespacePrefix = ""
gen.SigNamespaceUri = "http://www.w3.org/2000/09/xmldsig#"
gen.SignedInfoCanonAlg = "EXCL_C14N"
gen.SignedInfoDigestMethod = "sha1"
success = gen.AddSameDocRef("","sha1","","","")
// Provide a certificate + private key. (PFX password is test123)
Dim cert As New Chilkat.Cert
success = cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
If (success = False) Then
System.DebugLog(cert.LastErrorText)
Return
End If
success = gen.SetX509Cert(cert,True)
gen.KeyInfoType = "X509Data"
gen.X509Type = "Certificate"
// Load XML to be signed...
Dim sbXml As New Chilkat.StringBuilder
xmlToSign.EmitXmlDecl = False
success = xmlToSign.GetXmlSb(sbXml)
gen.Behaviors = "IndentedSignature"
// Sign the XML...
success = gen.CreateXmlDSigSb(sbXml)
If (success = False) Then
System.DebugLog(gen.LastErrorText)
Return
End If
// -----------------------------------------------
Dim http As New Chilkat.Http
Dim responseStatusCode As Int32
http.UncommonOptions = "AllowEmptyHeaders"
http.SetRequestHeader "SOAPAction",""
// The endpoint for this soap service is:
Dim endPoint As String
endPoint = "https://palena.sii.cl/DTEWS/GetTokenFromSeed.jws"
// Send the following SOAP XML
// <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:def="http://DefaultNamespace">
// <soapenv:Header/>
// <soapenv:Body>
// <def:getToken soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
// <pszXml>SIGNED_XML_GOES_HERE</pszXml>
// </def:getToken>
// </soapenv:Body>
// </soapenv:Envelope>
Dim xml As New Chilkat.Xml
xml.Tag = "soapenv:Envelope"
success = xml.AddAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
success = xml.AddAttribute("xmlns:xsd","http://www.w3.org/2001/XMLSchema")
success = xml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
success = xml.AddAttribute("xmlns:def","http://DefaultNamespace")
xml.UpdateChildContent "soapenv:Header",""
success = xml.UpdateAttrAt("soapenv:Body|def:getToken",True,"soapenv:encodingStyle","http://schemas.xmlsoap.org/soap/encoding/")
xml.UpdateChildContent "soapenv:Body|def:getToken|pszXml","SIGNED_XML_GOES_HERE"
// We must replace the "SIGNED_XML_GOES_HERE" with the exact contents of the signed XML to ensure the signed XML is not modified in any way.
Dim sbSoapXml As New Chilkat.StringBuilder
success = sbSoapXml.Append(xml.GetXml())
Dim numReplaced As Int32
numReplaced = sbXml.Replace("&","&")
numReplaced = sbXml.Replace(">",">")
numReplaced = sbXml.Replace("<","<")
numReplaced = sbXml.Replace("""",""")
numReplaced = sbSoapXml.Replace("SIGNED_XML_GOES_HERE",sbXml.GetAsString())
Dim xmlStr As String
xmlStr = sbSoapXml.GetAsString()
Dim resp As New Chilkat.HttpResponse
success = http.HttpStr("POST",endPoint,xmlStr,"utf-8","text/xml",resp)
If (success = False) Then
System.DebugLog(http.LastErrorText)
Return
End If
responseStatusCode = resp.StatusCode
System.DebugLog("Response Status Code: " + Str(responseStatusCode))
// You may examine the exact HTTP header sent with the POST like this:
System.DebugLog("LastHeader:")
System.DebugLog(http.LastHeader)
// Examine the XML returned by the web service:
System.DebugLog("XML Response:")
Dim xmlResp As New Chilkat.Xml
success = xmlResp.LoadXml(resp.BodyStr)
System.DebugLog(xmlResp.GetXml())
// Use this online tool to generate parsing code from response XML:
// Generate Parsing Code from XML