Sample code for 30+ languages & platforms
Perl

HTTP POST x-www-form-urlencoded

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

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

$http = chilkat::CkHttp->new();

$jsonStr = "{ some json ... }";

$req = chilkat::CkHttpRequest->new();
# This query parameter just happens to be named "json" and contains JSON text.
$req->AddParam("json",$jsonStr);

# We can optionally add more query parameters. 
$req->AddParam("abc","123");
$req->AddParam("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..

$req->put_HttpVerb("POST");
$req->put_ContentType("application/x-www-form-urlencoded");

$resp = chilkat::CkHttpResponse->new();
$success = $http->HttpReq("http://example.com/xyz/connect/report",$req,$resp);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

if ($resp->get_StatusCode() != 200) {
    print "Hey, I didn't receive the expected response status code!" . "\r\n";
    print "status code = " . $resp->get_StatusCode() . "\r\n";
}

# Could be error text if the status code wasn't what we expected, or could be the response
# body you're seeking..
$responseBody = $resp->bodyStr();
print $responseBody . "\r\n";

$fac = chilkat::CkFileAccess->new();
$filepath = "some file path";
$success = $fac->WriteEntireTextFile($filepath,$responseBody,"utf-8",0);
if ($success != 1) {
    print $fac->lastErrorText() . "\r\n";
}