DataFlex
DataFlex
Creating an application/json HTTP POST Request
See more HTTP Examples
Demonstrates how to create an HTTP POST request having the Content-Type application/json, where the body of the HTTP request is the following JSON:
{
"username" : "my_username",
"password" : "my_password",
"validation-factors" : {
"validationFactors" : [
{
"name" : "remote_address",
"value" : "127.0.0.1"
}
]
}
}
The generated HTTP request looks like this:
POST /something HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: domain
Content-Length: 216
{
"username": "my_username",
"password": "my_password",
"validation-factors": {
"validationFactors": [
{
"name": "remote_address",
"value": "127.0.0.1"
}
]
}
}
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Handle hoReq
Handle hoJson
Boolean iSuccess
Variant vVFactors
Handle hoVFactors
Variant vVArray
Handle hoVArray
Variant vFactorObj
Handle hoFactorObj
String sRequestMime
String sTemp1
// This example demonstrates building an application/json request.
Get Create (RefClass(cComChilkatHttpRequest)) To hoReq
If (Not(IsComObjectCreated(hoReq))) Begin
Send CreateComObject of hoReq
End
// The ContentType, HttpVerb, and Path properties should
// always be explicitly set.
Set ComHttpVerb Of hoReq To "POST"
Set ComPath Of hoReq To "/something"
Set ComContentType Of hoReq To "application/json"
// We may wish to add an "Accept" header to the request.
// This tells the server we'll accept an application/json response.
Send ComAddHeader To hoReq "Accept" "application/json"
// We'll use Chilkat's JSON API to create the JSON body of the HTTP request.
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComAppendString Of hoJson "username" "my_username" To iSuccess
Get ComAppendString Of hoJson "password" "my_password" To iSuccess
Get Create (RefClass(cComChilkatJsonObject)) To hoVFactors
If (Not(IsComObjectCreated(hoVFactors))) Begin
Send CreateComObject of hoVFactors
End
Get pvComObject of hoVFactors to vVFactors
Get ComAppendObject2 Of hoJson "validation-factors" vVFactors To iSuccess
Get Create (RefClass(cComChilkatJsonArray)) To hoVArray
If (Not(IsComObjectCreated(hoVArray))) Begin
Send CreateComObject of hoVArray
End
Get pvComObject of hoVArray to vVArray
Get ComAppendArray2 Of hoVFactors "validationFactors" vVArray To iSuccess
Get Create (RefClass(cComChilkatJsonObject)) To hoFactorObj
If (Not(IsComObjectCreated(hoFactorObj))) Begin
Send CreateComObject of hoFactorObj
End
Get pvComObject of hoFactorObj to vFactorObj
Get ComAddObjectAt2 Of hoVArray 0 vFactorObj To iSuccess
Get ComAppendString Of hoFactorObj "name" "remote_address" To iSuccess
Get ComAppendString Of hoFactorObj "value" "127.0.0.1" To iSuccess
// Use the JSON for the HTTP request body
// By default, the Emit method will output compact JSON.
// This is best for generating the smallest size request.
// To generate a more human-readable (pretty-printed) JSON request body,
// set the EmitCompact property to FALSE
Set ComEmitCompact Of hoJson To False
Get ComEmit Of hoJson To sTemp1
Get ComLoadBodyFromString Of hoReq sTemp1 "utf-8" To iSuccess
// View the request that would be sent if HttpSReq was called:
Get ComGenerateRequestText Of hoReq To sRequestMime
Showln sRequestMime
// A few important comments about the HTTP request that is generated:
//
// 1) The Content-Length header is automatically generated based on the actual length of the MIME message
// that follows the intial (topmost) MIME header.
// 2) The HOST header will automatically get filled in with the actual domain when HttpSReq
// is called
End_Procedure