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 3,4,5...) effectconnect Product UpdateUse this call to update a product (f.e. stock or price) in EffectConnect.
func chilkatTest() { // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. var success: Bool var uri: String? = "/products" var apiVersion: String? = "2.0" let http = CkoHttp()! let req = CkoHttpRequest()! // Use your effectconnect public key here... req.addHeader("KEY", value: "PUBLIC_KEY") req.addHeader("VERSION", value: apiVersion) req.addHeader("URI", value: uri) req.addHeader("RESPONSETYPE", value: "XML") req.addHeader("RESPONSELANGUAGE", value: "en") // Get the current date/time in timestamp format. let dt = CkoDateTime()! dt.setFromCurrentSystemTime() var timestamp: String? = dt.getAsTimestamp(true) req.addHeader("TIME", value: timestamp) print("timestamp = \(timestamp!)") let sbXml = CkoStringBuilder()! success = sbXml.loadFile("qa_data/xml/effectconnect/effconUpdate.xml", charset: "utf-8") print("length = \(sbXml.length.intValue)") req.httpVerb = "PUT" req.path = uri req.contentType = "multipart/form-data" success = req.addString(forUpload: "payload", filename: "effconUpdate.xml", strData: sbXml.getAsString(), charset: "utf-8") if success == false { print("\(req.lastErrorText!)") return } // Build a string-to-sign and sign it using our effectconnect private key let sbStringToSign = CkoStringBuilder()! sbStringToSign.appendInt(sbXml.length.intValue) sbStringToSign.append("PUT") sbStringToSign.append(uri) sbStringToSign.append(apiVersion) sbStringToSign.append(timestamp) let crypt = CkoCrypt2()! crypt.macAlgorithm = "hmac" crypt.hashAlgorithm = "sha512" crypt.encodingMode = "base64" // Use your effectconnect private key here: crypt.setMacKeyString("PRIVATE_KEY") req.addHeader("SIGNATURE", value: crypt.macStringENC(sbStringToSign.getAsString())) var resp: CkoHttpResponse? = http.synchronousRequest("submit.effectconnect.com", port: 443, ssl: true, req: req) if http.lastMethodSuccess == false { print("\(http.lastErrorText!)") return } print("response status code = \(resp!.statusCode.intValue)") // Examine the response. The response status code can be 200 for both errors and success. // The success or error is based on the XML returned in the response body. let xmlResp = CkoXml()! xmlResp.load(resp!.bodyStr) resp = nil print("response body:") print("\(xmlResp.getXml()!)") // A sample response: // <?xml version="1.0" encoding="utf-8"?> // <ApiResponseContainer> // <Request> // <RequestType>Products</RequestType> // <RequestAction>Update</RequestAction> // <RequestVersion>2.0</RequestVersion> // <RequestIdentifier/> // <ProcessedAt>2019-04-18T15:37:32+02:00</ProcessedAt> // </Request> // <Response> // <Result>Success</Result> // <ProductsUpdateResponseContainer> // <ProcessID><![CDATA[f81ngzD2S7gooFk3]]></ProcessID> // </ProductsUpdateResponseContainer> // </Response> // </ApiResponseContainer> // var tagPath: String? var RequestType: String? var RequestAction: String? var RequestVersion: String? var ProcessedAt: String? var Result: String? var ProcessID: String? RequestType = xmlResp.getChildContent("Request|RequestType") RequestAction = xmlResp.getChildContent("Request|RequestAction") RequestVersion = xmlResp.getChildContent("Request|RequestVersion") ProcessedAt = xmlResp.getChildContent("Request|ProcessedAt") Result = xmlResp.getChildContent("Response|Result") ProcessID = xmlResp.getChildContent("Response|ProductsUpdateResponseContainer|ProcessID") } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.