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
(PureBasic) HttpPostJson2Async ExampleDemonstrates use of the HttpPostJson2Async method.
IncludeFile "CkTask.pb" IncludeFile "CkHttp.pb" IncludeFile "CkHttpResponse.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() ; 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.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i ; 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.. CkHttp::setCkAcceptCharset(http, "") CkHttp::setCkUserAgent(http, "") CkHttp::setCkAcceptLanguage(http, "") CkHttp::setCkAllowGzip(http, 0) jsonBody.s = "{" + Chr(34) + "client_id" + Chr(34) + ": " + Chr(34) + "PLAID_CLIENT_ID" + Chr(34) + ", " + Chr(34) + "secret" + Chr(34) + ":" + Chr(34) + "PLAID_SECRET" + Chr(34) + ", " + Chr(34) + "count" + Chr(34) + ": 10, " + Chr(34) + "offset" + Chr(34) + ": 0}" task.i = CkHttp::ckPostJson2Async(http,"https://sandbox.plaid.com/institutions/get","application/json",jsonBody) If CkHttp::ckLastMethodSuccess(http) = 0 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) ProcedureReturn EndIf ; Start the background task. success = CkTask::ckRun(task) If Not success Debug CkTask::ckLastErrorText(task) CkTask::ckDispose(task) CkHttp::ckDispose(http) ProcedureReturn EndIf ; 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 CkTask::ckFinished(task) <> 1 ; Sleep 100 ms. CkTask::ckSleepMs(task,100) Wend ; 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 CkTask::ckStatusInt(task) <> 7 Debug "Task did not complete." Debug "task status: " + CkTask::ckStatus(task) CkTask::ckDispose(task) CkHttp::ckDispose(http) ProcedureReturn EndIf ; 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 CkTask::ckTaskSuccess(task) = 0 Debug "The underlying task failed, and there is no HTTP response object." Debug "The LastErrorText for the underlying method call is:" Debug CkTask::ckResultErrorText(task) CkTask::ckDispose(task) CkHttp::ckDispose(http) ProcedureReturn EndIf ; To get the HTTP response object, create a new instance and load it with the result from the task. resp.i = CkHttpResponse::ckCreate() If resp.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttpResponse::ckLoadTaskResult(resp,task) CkTask::ckDispose(task) statusCode.i = CkHttpResponse::ckStatusCode(resp) Debug "Response status code = " + Str(statusCode) ; Examine the JSON response.. json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp)) CkJsonObject::setCkEmitCompact(json, 0) Debug "JSON Response Body:" Debug CkJsonObject::ckEmit(json) CkHttp::ckDispose(http) CkHttpResponse::ckDispose(resp) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.