Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(AutoIt) palena.sii.cl getToken SOAP RequestDemonstrates how to call getToken SOAP request at palena.sii.cl
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. Local $bSuccess ; 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 <> True) 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 <> True) Then ConsoleWrite($oGen.LastErrorText & @CRLF) Exit EndIf ; ----------------------------------------------- $oHttp = ObjCreate("Chilkat.Http") Local $iResponseStatusCode $oHttp.UncommonOptions = "AllowEmptyHeaders" $oHttp.SetRequestHeader "SOAPAction","" $oHttp.SetRequestHeader "Content-Type","text/xml; charset=utf-8" ; 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 $oResp = $oHttp.PostXml($sEndPoint,$oSbSoapXml.GetAsString(),"utf-8") If ($oHttp.LastMethodSuccess <> True) Then ConsoleWrite($oHttp.LastErrorText & @CRLF) ConsoleWrite("LastHeader:" & @CRLF) ConsoleWrite($oHttp.LastHeader & @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 |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.