Sample code for 30+ languages & platforms
Tcl

HTTP POST x-www-form-urlencoded

Demonstrates how to send a simple x-www-form-urlencoded POST.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set http [new_CkHttp]

set jsonStr "{ some json ... }"

set req [new_CkHttpRequest]

# This query parameter just happens to be named "json" and contains JSON text.
CkHttpRequest_AddParam $req "json" $jsonStr

# We can optionally add more query parameters. 
CkHttpRequest_AddParam $req "abc" "123"
CkHttpRequest_AddParam $req "xml" "<abc>123</abc>"

# Note: Just because we passed a query param named "json" or "xml" means nothing special.  It's still just
# a name=value query parameter..

CkHttpRequest_put_HttpVerb $req "POST"
CkHttpRequest_put_ContentType $req "application/x-www-form-urlencoded"

set resp [new_CkHttpResponse]

set success [CkHttp_HttpReq $http "http://example.com/xyz/connect/report" $req $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkHttpRequest $req
    delete_CkHttpResponse $resp
    exit
}

if {[CkHttpResponse_get_StatusCode $resp] != 200} then {
    puts "Hey, I didn't receive the expected response status code!"
    puts "status code = [CkHttpResponse_get_StatusCode $resp]"
}

# Could be error text if the status code wasn't what we expected, or could be the response
# body you're seeking..
set responseBody [CkHttpResponse_bodyStr $resp]
puts "$responseBody"

set fac [new_CkFileAccess]

set filepath "some file path"
set success [CkFileAccess_WriteEntireTextFile $fac $filepath $responseBody "utf-8" 0]
if {$success != 1} then {
    puts [CkFileAccess_lastErrorText $fac]
}


delete_CkHttp $http
delete_CkHttpRequest $req
delete_CkHttpResponse $resp
delete_CkFileAccess $fac