Sample code for 30+ languages & platforms
Tcl

REST POST JSON using Gzip Content Encoding

See more REST Examples

Demonstrates how to send a JSON POST using the gzip Content-Encoding.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

# Use the online tool at https://tools.chilkat.io/Default.cshtml
# to generate the JSON code that creates this JSON:

# {
#     "lists": [
#         {
#             "id": "1511199999"
#         }
#     ],
#     "confirmed": false,
#     "email_addresses": [
#         {
#             "email_address": "support@chilkatsoft.com"
#         }
#     ],
#     "first_name": "Matt",
#     "last_name": "Smith"
# }
# 

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "lists[0].id" "1511199999"
CkJsonObject_UpdateBool $json "confirmed" 0
CkJsonObject_UpdateString $json "email_addresses[0].email_address" "support@chilkatsoft.com"
CkJsonObject_UpdateString $json "first_name" "Matt"
CkJsonObject_UpdateString $json "last_name" "Smith"

set rest [new_CkRest]

set success [CkRest_Connect $rest "api.constantcontact.com" 443 1 1]
if {$success != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkJsonObject $json
    delete_CkRest $rest
    exit
}

CkRest_AddHeader $rest "Content-Type" "application/json"
CkRest_AddHeader $rest "Authorization" "Bearer xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"

# Tell the server you'll accept only an application/json response.
CkRest_AddHeader $rest "Accept" "application/json"

# Indicate that we'll be sending the request body gzipped.
CkRest_AddHeader $rest "Content-Encoding" "gzip"

set sbReq [new_CkStringBuilder]

CkJsonObject_EmitSb $json $sbReq

# Send the POST.
set sbResp [new_CkStringBuilder]

set success [CkRest_FullRequestSb $rest "POST" "/v2/contacts?action_by=ACTION_BY_VISITOR&api_key=xxxxxxx" $sbReq $sbResp]
if {$success != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkJsonObject $json
    delete_CkRest $rest
    delete_CkStringBuilder $sbReq
    delete_CkStringBuilder $sbResp
    exit
}

puts "Response body:"
puts [CkStringBuilder_getAsString $sbResp]

if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
    puts "Received error response code: [CkRest_get_ResponseStatusCode $rest]"
    delete_CkJsonObject $json
    delete_CkRest $rest
    delete_CkStringBuilder $sbReq
    delete_CkStringBuilder $sbResp
    exit
}

set jsonResp [new_CkJsonObject]

CkJsonObject_LoadSb $jsonResp $sbResp

# Use the online tool at https://tools.chilkat.io/jsonParse.cshtml
# to generate the JSON code that parses the JSON response..

delete_CkJsonObject $json
delete_CkRest $rest
delete_CkStringBuilder $sbReq
delete_CkStringBuilder $sbResp
delete_CkJsonObject $jsonResp