Sample code for 30+ languages & platforms
AutoIt

palena.sii.cl getToken SOAP Request

See more SII Chile Examples

Demonstrates how to call getToken SOAP request at palena.sii.cl

Chilkat AutoIt Downloads

AutoIt
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("&","&amp;")
$iNumReplaced = $oSbXml.Replace(">","&gt;")
$iNumReplaced = $oSbXml.Replace("<","&lt;")
$iNumReplaced = $oSbXml.Replace("""","&quot;")
$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