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) 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.AddStringForUpload("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.LoadXml(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.