PowerShell
PowerShell
palena.sii.cl getToken SOAP Request
See more SII Chile Examples
Demonstrates how to call getToken SOAP request at palena.sii.clChilkat PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$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...
$xmlToSign = New-Object Chilkat.Xml
$xmlToSign.Tag = "getToken"
# This is the seed obtained from palena.sii.cl getSeed
$xmlToSign.UpdateChildContent("item|Semilla","033878794660")
$gen = New-Object 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"
$gen.AddSameDocRef("","sha1","","","")
# Provide a certificate + private key. (PFX password is test123)
$cert = New-Object Chilkat.Cert
$success = $cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
if ($success -eq $false) {
$($cert.LastErrorText)
exit
}
$gen.SetX509Cert($cert,$true)
$gen.KeyInfoType = "X509Data"
$gen.X509Type = "Certificate"
# Load XML to be signed...
$sbXml = New-Object Chilkat.StringBuilder
$xmlToSign.EmitXmlDecl = $false
$xmlToSign.GetXmlSb($sbXml)
$gen.Behaviors = "IndentedSignature"
# Sign the XML...
$success = $gen.CreateXmlDSigSb($sbXml)
if ($success -eq $false) {
$($gen.LastErrorText)
exit
}
# -----------------------------------------------
$http = New-Object Chilkat.Http
$http.UncommonOptions = "AllowEmptyHeaders"
$http.SetRequestHeader("SOAPAction","")
# The endpoint for this soap service is:
$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>
$xml = New-Object Chilkat.Xml
$xml.Tag = "soapenv:Envelope"
$xml.AddAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
$xml.AddAttribute("xmlns:xsd","http://www.w3.org/2001/XMLSchema")
$xml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
$xml.AddAttribute("xmlns:def","http://DefaultNamespace")
$xml.UpdateChildContent("soapenv:Header","")
$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.
$sbSoapXml = New-Object Chilkat.StringBuilder
$sbSoapXml.Append($xml.GetXml())
$numReplaced = $sbXml.Replace("&","&")
$numReplaced = $sbXml.Replace(">",">")
$numReplaced = $sbXml.Replace("<","<")
$numReplaced = $sbXml.Replace("`"",""")
$numReplaced = $sbSoapXml.Replace("SIGNED_XML_GOES_HERE",$sbXml.GetAsString())
$xmlStr = $sbSoapXml.GetAsString()
$resp = New-Object Chilkat.HttpResponse
$success = $http.HttpStr("POST",$endPoint,$xmlStr,"utf-8","text/xml",$resp)
if ($success -eq $false) {
$($http.LastErrorText)
exit
}
$responseStatusCode = $resp.StatusCode
$("Response Status Code: " + $responseStatusCode)
# You may examine the exact HTTP header sent with the POST like this:
$("LastHeader:")
$($http.LastHeader)
# Examine the XML returned by the web service:
$("XML Response:")
$xmlResp = New-Object Chilkat.Xml
$xmlResp.LoadXml($resp.BodyStr)
$($xmlResp.GetXml())
# Use this online tool to generate parsing code from response XML:
# Generate Parsing Code from XML