Sample code for 30+ languages & platforms
PureBasic Requires Chilkat v11.1.0+

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