DataFlex
DataFlex
HttpPostJson2Async Example
Demonstrates use of the HttpPostJson2Async method.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
String sJsonBody
Variant vTask
Handle hoTask
Handle hoResp
Integer iStatusCode
Handle hoJson
String sTemp1
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
// 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.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
// 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..
Set ComAcceptCharset Of hoHttp To ""
Set ComUserAgent Of hoHttp To ""
Set ComAcceptLanguage Of hoHttp To ""
Set ComAllowGzip Of hoHttp To False
Move '{"client_id": "PLAID_CLIENT_ID", "secret":"PLAID_SECRET", "count": 10, "offset": 0}' To sJsonBody
Get ComPostJson2Async Of hoHttp "https://sandbox.plaid.com/institutions/get" "application/json" sJsonBody To vTask
If (IsComObject(vTask)) Begin
Get Create (RefClass(cComChilkatTask)) To hoTask
Set pvComObject Of hoTask To vTask
End
Get ComLastMethodSuccess Of hoHttp To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
// Start the background task.
Get ComRun Of hoTask To iSuccess
If (Not iSuccess) Begin
Get ComLastErrorText Of hoTask To sTemp1
Showln sTemp1
Send Destroy of hoTask
Procedure_Return
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 ((ComFinished(hoTask)) <> True)
// Sleep 100 ms.
Send ComSleepMs To hoTask 100
Loop
// 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.
Get ComStatusInt Of hoTask To iTemp1
If (iTemp1 <> 7) Begin
Showln "Task did not complete."
Get ComStatus Of hoTask To sTemp1
Showln "task status: " sTemp1
Send Destroy of hoTask
Procedure_Return
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).
Get ComTaskSuccess Of hoTask To bTemp1
If (bTemp1 = False) Begin
Showln "The underlying task failed, and there is no HTTP response object."
Showln "The LastErrorText for the underlying method call is:"
Get ComResultErrorText Of hoTask To sTemp1
Showln sTemp1
Send Destroy of hoTask
Procedure_Return
End
// To get the HTTP response object, create a new instance and load it with the result from the task.
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get ComLoadTaskResult Of hoResp vTask To iSuccess
Send Destroy of hoTask
Get ComStatusCode Of hoResp To iStatusCode
Showln "Response status code = " iStatusCode
// Examine the JSON response..
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComBodyStr Of hoResp To sTemp1
Get ComLoad Of hoJson sTemp1 To iSuccess
Set ComEmitCompact Of hoJson To False
Showln "JSON Response Body:"
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
End_Procedure