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) HttpPostJson2Async ExampleDemonstrates use of the HttpPostJson2Async method.
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 http: TChilkatHttp; success: Integer; jsonBody: WideString; task: IChilkatTask; resp: TChilkatHttpResponse; statusCode: Integer; json: TChilkatJsonObject; begin // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code // See PostJson2 Example for the synchronous equivalent of this example. http := TChilkatHttp.Create(Self); // Sends a POST equivalent to the following CURL command: // curl -X POST https://sandbox.plaid.com/institutions/get \ // -H 'content-type: application/json' \ // -d '{ // "client_id": String, // "secret":String, // "count": Number, // "offset": Number // }' // Suppress some default headers that would automatically added.. http.AcceptCharset := ''; http.UserAgent := ''; http.AcceptLanguage := ''; http.AllowGzip := 0; jsonBody := '{"client_id": "PLAID_CLIENT_ID", "secret":"PLAID_SECRET", "count": 10, "offset": 0}'; task := http.PostJson2Async('https://sandbox.plaid.com/institutions/get','application/json',jsonBody); if (http.LastMethodSuccess = 0) then begin Memo1.Lines.Add(http.LastErrorText); Exit; end; // Start the background task. success := task.Run(); if (not success) then begin Memo1.Lines.Add(task.LastErrorText); Exit; end; // The application is now free to do anything else // while the HTTP POST is in progress // For this example, we'll simply sleep and periodically // check to see if the HTTP POST is finished. while task.Finished <> 1 do begin // Sleep 100 ms. task.SleepMs(100); end; // When we get here, the task is either finished successfully or not, or was canceled/aborted. // If the task was "canceled", it was canceled prior to actually starting. This could // happen if the task was canceled while waiting in a thread pool queue to be scheduled by Chilkat's // background thread pool scheduler. // If the task was "aborted", it indicates that it was canceled while running in a background thread. // The ResultErrorText will likely indicate that the task was aborted. // If the task "completed", then it ran to completion, but the actual success/failure of the method // is determined by getting the result of the underlying method call. // A task status of 7 indicates completion. if (task.StatusInt <> 7) then begin Memo1.Lines.Add('Task did not complete.'); Memo1.Lines.Add('task status: ' + task.Status); Exit; end; // When called synchronously, the PostJson2 method returns an HTTP response object, // unless the method failed and there was no response to be had. // Check to see if PostJson2 method failed (and thus there is no response object). if (task.TaskSuccess = 0) then begin Memo1.Lines.Add('The underlying task failed, and there is no HTTP response object.'); Memo1.Lines.Add('The LastErrorText for the underlying method call is:'); Memo1.Lines.Add(task.ResultErrorText); Exit; end; // To get the HTTP response object, create a new instance and load it with the result from the task. resp := TChilkatHttpResponse.Create(Self); resp.LoadTaskResult(task); statusCode := resp.StatusCode; Memo1.Lines.Add('Response status code = ' + IntToStr(statusCode)); // Examine the JSON response.. json := TChilkatJsonObject.Create(Self); json.Load(resp.BodyStr); json.EmitCompact := 0; Memo1.Lines.Add('JSON Response Body:'); Memo1.Lines.Add(json.Emit()); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.