Perl Requires Chilkat v9.5.0.77+
Chilkat2 Perl
Debug REST HTTP Request
See more REST Examples
Demonstrates how to generate the HTTP Request (with all headers intact) without actually sending the request.Chilkat Perl Downloads
use strict;
use warnings;
use Chilkat2;
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# This example will connect to the web server, but does not actually send a request.
# When in DebugMode, the request is composed in memory and can be retrieved by calling
# GetLastDebugRequest.
my $rest = Chilkat2::Rest->new;
# Connect Code...
# URL: https://test-api.service.hmrc.gov.uk/organisations/vat/MY_HMRC_VRN/returns
my $bTls = 1;
my $port = 443;
my $bAutoReconnect = 1;
my $success = $rest->Connect('test-api.service.hmrc.gov.uk', $port, $bTls, $bAutoReconnect);
if (!$success) {
print 'ConnectFailReason: ', $rest->ConnectFailReason, "\n";
print $rest->LastErrorText, "\n";
exit;
}
# Build the request body...
my $json = Chilkat2::JsonObject->new;
$json->UpdateString('periodKey', 'A001');
$json->UpdateNumber('vatDueSales', '105.50');
$json->UpdateNumber('vatDueAcquisitions', '-100.45');
$json->UpdateNumber('totalVatDue', '5.05');
$json->UpdateNumber('vatReclaimedCurrPeriod', '105.15');
$json->UpdateNumber('netVatDue', '100.10');
$json->UpdateInt('totalValueSalesExVAT', 300);
$json->UpdateInt('totalValuePurchasesExVAT', 300);
$json->UpdateInt('totalValueGoodsSuppliedExVAT', 3000);
$json->UpdateInt('totalAcquisitionsExVAT', 3000);
$json->UpdateBool('finalised', 1);
# Add Headers...
$rest->AddHeader('Accept', 'application/vnd.hmrc.1.0+json');
$rest->AddHeader('Authorization', 'Bearer HMRC_ACCESS_TOKEN');
$rest->AddHeader('Content-Type', 'application/json');
my $sbRequestBody = Chilkat2::StringBuilder->new;
$json->EmitSb($sbRequestBody);
# Set DebugMode so that no request is actually sent.
$rest->DebugMode(1);
my $sbResponseBody = Chilkat2::StringBuilder->new;
$success = $rest->FullRequestSb('POST', '/organisations/vat/MY_HMRC_VRN/returns', $sbRequestBody, $sbResponseBody);
if (!$success) {
print $rest->LastErrorText, "\n";
exit;
}
# Get the exact contents of what would've been sent.
# This includes the HTTP start line, the HTTP request headers, and the request body.
# Given that it's possible for the request body to contain binary data,
# the GetLastDebugRequest fetches into a BinData object.
# In this case, however, our request body contained JSON, so we can
# examine it as a string..
my $bdRequest = Chilkat2::BinData->new;
$success = $rest->GetLastDebugRequest($bdRequest);
print "----\n";
print $bdRequest->GetString('utf-8'), "\n";
print "----\n";
# The output for the above case:
# POST /organisations/vat/MY_HMRC_VRN/returns HTTP/1.1
# Accept: application/vnd.hmrc.1.0+json
# Host: test-api.service.hmrc.gov.uk
# Authorization: Bearer HMRC_ACCESS_TOKEN
# Content-Type: application/json
# Content-Length: 281
#
# {"periodKey":"A001","vatDueSales":105.50, ... ,"finalised":true}
#
#