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
(Objective-C) effectconnect Product UpdateUse this call to update a product (f.e. stock or price) in EffectConnect.
#import <NSString.h> #import <CkoHttp.h> #import <CkoHttpRequest.h> #import <CkoDateTime.h> #import <CkoStringBuilder.h> #import <CkoCrypt2.h> #import <CkoHttpResponse.h> #import <CkoXml.h> // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. BOOL success; NSString *uri = @"/products"; NSString *apiVersion = @"2.0"; CkoHttp *http = [[CkoHttp alloc] init]; CkoHttpRequest *req = [[CkoHttpRequest alloc] init]; // 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. CkoDateTime *dt = [[CkoDateTime alloc] init]; [dt SetFromCurrentSystemTime]; NSString *timestamp = [dt GetAsTimestamp: YES]; [req AddHeader: @"TIME" value: timestamp]; NSLog(@"%@%@",@"timestamp = ",timestamp); CkoStringBuilder *sbXml = [[CkoStringBuilder alloc] init]; success = [sbXml LoadFile: @"qa_data/xml/effectconnect/effconUpdate.xml" charset: @"utf-8"]; NSLog(@"%@%d",@"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 == NO) { NSLog(@"%@",req.LastErrorText); return; } // Build a string-to-sign and sign it using our effectconnect private key CkoStringBuilder *sbStringToSign = [[CkoStringBuilder alloc] init]; [sbStringToSign AppendInt: sbXml.Length]; [sbStringToSign Append: @"PUT"]; [sbStringToSign Append: uri]; [sbStringToSign Append: apiVersion]; [sbStringToSign Append: timestamp]; CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init]; 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]]]; CkoHttpResponse *resp = [http SynchronousRequest: @"submit.effectconnect.com" port: [NSNumber numberWithInt: 443] ssl: YES req: req]; if (http.LastMethodSuccess == NO) { NSLog(@"%@",http.LastErrorText); return; } NSLog(@"%@%d",@"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. CkoXml *xmlResp = [[CkoXml alloc] init]; [xmlResp LoadXml: resp.BodyStr]; NSLog(@"%@",@"response body:"); NSLog(@"%@",[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> // NSString *tagPath = 0; NSString *RequestType = 0; NSString *RequestAction = 0; NSString *RequestVersion = 0; NSString *ProcessedAt = 0; NSString *Result = 0; NSString *ProcessID = 0; 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.