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
(Delphi ActiveX) effectconnect Product UpdateUse this call to update a product (f.e. stock or price) in EffectConnect.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var success: Integer; uri: WideString; apiVersion: WideString; http: TChilkatHttp; req: TChilkatHttpRequest; dt: TCkDateTime; timestamp: WideString; sbXml: TChilkatStringBuilder; sbStringToSign: TChilkatStringBuilder; crypt: TChilkatCrypt2; resp: IChilkatHttpResponse; xmlResp: TChilkatXml; tagPath: WideString; RequestType: WideString; RequestAction: WideString; RequestVersion: WideString; ProcessedAt: WideString; Result: WideString; ProcessID: WideString; begin // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. uri := '/products'; apiVersion := '2.0'; http := TChilkatHttp.Create(Self); req := TChilkatHttpRequest.Create(Self); // Use your effectconnect public key here... req.AddHeader('KEY','PUBLIC_KEY'); req.AddHeader('VERSION',apiVersion); req.AddHeader('URI',uri); req.AddHeader('RESPONSETYPE','XML'); req.AddHeader('RESPONSELANGUAGE','en'); // Get the current date/time in timestamp format. dt := TCkDateTime.Create(Self); dt.SetFromCurrentSystemTime(); timestamp := dt.GetAsTimestamp(1); req.AddHeader('TIME',timestamp); Memo1.Lines.Add('timestamp = ' + timestamp); sbXml := TChilkatStringBuilder.Create(Self); success := sbXml.LoadFile('qa_data/xml/effectconnect/effconUpdate.xml','utf-8'); Memo1.Lines.Add('length = ' + IntToStr(sbXml.Length)); req.HttpVerb := 'PUT'; req.Path := uri; req.ContentType := 'multipart/form-data'; success := req.AddStringForUpload('payload','effconUpdate.xml',sbXml.GetAsString(),'utf-8'); if (success = 0) then begin Memo1.Lines.Add(req.LastErrorText); Exit; end; // Build a string-to-sign and sign it using our effectconnect private key sbStringToSign := TChilkatStringBuilder.Create(Self); sbStringToSign.AppendInt(sbXml.Length); sbStringToSign.Append('PUT'); sbStringToSign.Append(uri); sbStringToSign.Append(apiVersion); sbStringToSign.Append(timestamp); crypt := TChilkatCrypt2.Create(Self); crypt.MacAlgorithm := 'hmac'; crypt.HashAlgorithm := 'sha512'; crypt.EncodingMode := 'base64'; // Use your effectconnect private key here: crypt.SetMacKeyString('PRIVATE_KEY'); req.AddHeader('SIGNATURE',crypt.MacStringENC(sbStringToSign.GetAsString())); resp := http.SynchronousRequest('submit.effectconnect.com',443,1,req.ControlInterface); if (http.LastMethodSuccess = 0) then begin Memo1.Lines.Add(http.LastErrorText); Exit; end; Memo1.Lines.Add('response status code = ' + IntToStr(resp.StatusCode)); // 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. xmlResp := TChilkatXml.Create(Self); xmlResp.LoadXml(resp.BodyStr); Memo1.Lines.Add('response body:'); Memo1.Lines.Add(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> // 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'); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.