Sample code for 30+ languages & platforms
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

PureBasic
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