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