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
(Swift 2) palena.sii.cl getToken SOAP RequestDemonstrates how to call getToken SOAP request at palena.sii.cl
func chilkatTest() { // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. var success: Bool // Create the XML to be signed... let xmlToSign = CkoXml() xmlToSign.Tag = "getToken" // This is the seed obtained from palena.sii.cl getSeed xmlToSign.UpdateChildContent("item|Semilla", value: "033878794660") let gen = CkoXmlDSigGen() 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("", digestMethod: "sha1", canonMethod: "", prefixList: "", refType: "") // Provide a certificate + private key. (PFX password is test123) let cert = CkoCert() success = cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx", password: "test123") if success != true { print("\(cert.LastErrorText)") return } gen.SetX509Cert(cert, usePrivateKey: true) gen.KeyInfoType = "X509Data" gen.X509Type = "Certificate" // Load XML to be signed... let sbXml = CkoStringBuilder() xmlToSign.EmitXmlDecl = false xmlToSign.GetXmlSb(sbXml) gen.Behaviors = "IndentedSignature" // Sign the XML... success = gen.CreateXmlDSigSb(sbXml) if success != true { print("\(gen.LastErrorText)") return } // ----------------------------------------------- let http = CkoHttp() var responseStatusCode: Int http.UncommonOptions = "AllowEmptyHeaders" http.SetRequestHeader("SOAPAction", value: "") http.SetRequestHeader("Content-Type", value: "text/xml; charset=utf-8") // The endpoint for this soap service is: var endPoint: String? = "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> let xml = CkoXml() xml.Tag = "soapenv:Envelope" xml.AddAttribute("xmlns:xsi", value: "http://www.w3.org/2001/XMLSchema-instance") xml.AddAttribute("xmlns:xsd", value: "http://www.w3.org/2001/XMLSchema") xml.AddAttribute("xmlns:soapenv", value: "http://schemas.xmlsoap.org/soap/envelope/") xml.AddAttribute("xmlns:def", value: "http://DefaultNamespace") xml.UpdateChildContent("soapenv:Header", value: "") xml.UpdateAttrAt("soapenv:Body|def:getToken", autoCreate: true, attrName: "soapenv:encodingStyle", attrValue: "http://schemas.xmlsoap.org/soap/encoding/") xml.UpdateChildContent("soapenv:Body|def:getToken|pszXml", value: "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. let sbSoapXml = CkoStringBuilder() sbSoapXml.Append(xml.GetXml()) var numReplaced: Int = sbXml.Replace("&", replacement: "&").intValue numReplaced = sbXml.Replace(">", replacement: ">").intValue numReplaced = sbXml.Replace("<", replacement: "<").intValue numReplaced = sbXml.Replace("\"", replacement: """).intValue numReplaced = sbSoapXml.Replace("SIGNED_XML_GOES_HERE", replacement: sbXml.GetAsString()).intValue var resp: CkoHttpResponse? = http.PostXml(endPoint, xmlDoc: sbSoapXml.GetAsString(), charset: "utf-8") if http.LastMethodSuccess != true { print("\(http.LastErrorText)") print("LastHeader:") print("\(http.LastHeader)") return } responseStatusCode = resp!.StatusCode.intValue print("Response Status Code: \(responseStatusCode)") // You may examine the exact HTTP header sent with the POST like this: print("LastHeader:") print("\(http.LastHeader)") // Examine the XML returned by the web service: print("XML Response:") let xmlResp = CkoXml() xmlResp.LoadXml(resp!.BodyStr) print("\(xmlResp.GetXml())") // Use this online tool to generate parsing code from response XML: // Generate Parsing Code from XML resp = nil } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.