AutoIt
AutoIt
palena.sii.cl getToken SOAP Request
See more SII Chile Examples
Demonstrates how to call getToken SOAP request at palena.sii.clChilkat AutoIt Downloads
Local $bSuccess = 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...
$oXmlToSign = ObjCreate("Chilkat.Xml")
$oXmlToSign.Tag = "getToken"
; This is the seed obtained from palena.sii.cl getSeed
$oXmlToSign.UpdateChildContent "item|Semilla","033878794660"
$oGen = ObjCreate("Chilkat.XmlDSigGen")
$oGen.SigLocation = "getToken"
$oGen.SigLocationMod = 0
$oGen.SigNamespacePrefix = ""
$oGen.SigNamespaceUri = "http://www.w3.org/2000/09/xmldsig#"
$oGen.SignedInfoCanonAlg = "EXCL_C14N"
$oGen.SignedInfoDigestMethod = "sha1"
$oGen.AddSameDocRef("","sha1","","","")
; Provide a certificate + private key. (PFX password is test123)
$oCert = ObjCreate("Chilkat.Cert")
$bSuccess = $oCert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
If ($bSuccess = False) Then
ConsoleWrite($oCert.LastErrorText & @CRLF)
Exit
EndIf
$oGen.SetX509Cert($oCert,True)
$oGen.KeyInfoType = "X509Data"
$oGen.X509Type = "Certificate"
; Load XML to be signed...
$oSbXml = ObjCreate("Chilkat.StringBuilder")
$oXmlToSign.EmitXmlDecl = False
$oXmlToSign.GetXmlSb($oSbXml)
$oGen.Behaviors = "IndentedSignature"
; Sign the XML...
$bSuccess = $oGen.CreateXmlDSigSb($oSbXml)
If ($bSuccess = False) Then
ConsoleWrite($oGen.LastErrorText & @CRLF)
Exit
EndIf
; -----------------------------------------------
$oHttp = ObjCreate("Chilkat.Http")
Local $iResponseStatusCode
$oHttp.UncommonOptions = "AllowEmptyHeaders"
$oHttp.SetRequestHeader "SOAPAction",""
; The endpoint for this soap service is:
Local $sEndPoint = "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>
$oXml = ObjCreate("Chilkat.Xml")
$oXml.Tag = "soapenv:Envelope"
$oXml.AddAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
$oXml.AddAttribute("xmlns:xsd","http://www.w3.org/2001/XMLSchema")
$oXml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
$oXml.AddAttribute("xmlns:def","http://DefaultNamespace")
$oXml.UpdateChildContent "soapenv:Header",""
$oXml.UpdateAttrAt("soapenv:Body|def:getToken",True,"soapenv:encodingStyle","http://schemas.xmlsoap.org/soap/encoding/")
$oXml.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.
$oSbSoapXml = ObjCreate("Chilkat.StringBuilder")
$oSbSoapXml.Append($oXml.GetXml())
Local $iNumReplaced = $oSbXml.Replace("&","&")
$iNumReplaced = $oSbXml.Replace(">",">")
$iNumReplaced = $oSbXml.Replace("<","<")
$iNumReplaced = $oSbXml.Replace("""",""")
$iNumReplaced = $oSbSoapXml.Replace("SIGNED_XML_GOES_HERE",$oSbXml.GetAsString())
Local $sXmlStr = $oSbSoapXml.GetAsString()
$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpStr("POST",$sEndPoint,$sXmlStr,"utf-8","text/xml",$oResp)
If ($bSuccess = False) Then
ConsoleWrite($oHttp.LastErrorText & @CRLF)
Exit
EndIf
$iResponseStatusCode = $oResp.StatusCode
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