PureBasic
PureBasic
POST JSON to REST API with non-us-ascii Chars Escaped
See more REST Examples
Demonstrates how to POST to a REST API with non-usascii chars within JSON Unicode escaped.Chilkat PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkRest.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
success = 0
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect using TLS.
bAutoReconnect.i = 1
success = CkRest::ckConnect(rest,"chilkatsoft.com",443,1,bAutoReconnect)
; Load JSON containing the following Korean text.
; {
; "BillAddr": {
; "Id": "239615",
; "Line1": "류리하",
; "Line2": "류리하류리하",
; "City": "류리하류리하",
; "Country": "US",
; "CountrySubDivisionCode": "AK",
; "PostalCode": "류리하"
; }
; }
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::setCkEmitCompact(json, 0)
success = CkJsonObject::ckLoadFile(json,"qa_data/json/korean.json")
If success = 0
Debug CkJsonObject::ckLastErrorText(json)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
success = CkRest::ckAddHeader(rest,"Content-Type","application/json; charset=UTF-8")
sb.i = CkStringBuilder::ckCreate()
If sb.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckEmitSb(json,sb)
CkStringBuilder::ckEncode(sb,"unicodeescape","utf-8")
Debug CkStringBuilder::ckGetAsString(sb)
; The StringBuilder contains this:
; {
; "BillAddr": {
; "Id": "239615",
; "Line1": "\ub958\ub9ac\ud558",
; "Line2": "\ub958\ub9ac\ud558\ub958\ub9ac\ud558",
; "City": "\ub958\ub9ac\ud558\ub958\ub9ac\ud558",
; "Country": "US",
; "CountrySubDivisionCode": "AK",
; "PostalCode": "\ub958\ub9ac\ud558"
; }
; }
sbResp.i = CkStringBuilder::ckCreate()
If sbResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkRest::ckFullRequestSb(rest,"POST","/echo_request_body.asp",sb,sbResp)
If success = 0
Debug CkRest::ckLastErrorText(rest)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(json)
CkStringBuilder::ckDispose(sb)
CkStringBuilder::ckDispose(sbResp)
ProcedureReturn
EndIf
; Show the response.
Debug "Json Response: " + CkStringBuilder::ckGetAsString(sbResp)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(json)
CkStringBuilder::ckDispose(sb)
CkStringBuilder::ckDispose(sbResp)
ProcedureReturn
EndProcedure