Delphi DLL Requires Chilkat v9.5.0.77+
Delphi DLL
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 Delphi DLL Downloads
var
success: Boolean;
rest: HCkRest;
bTls: Boolean;
port: Integer;
bAutoReconnect: Boolean;
json: HCkJsonObject;
sbRequestBody: HCkStringBuilder;
sbResponseBody: HCkStringBuilder;
bdRequest: HCkBinData;
begin
success := False;
// 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.
rest := CkRest_Create();
// Connect Code...
// URL: https://test-api.service.hmrc.gov.uk/organisations/vat/MY_HMRC_VRN/returns
bTls := True;
port := 443;
bAutoReconnect := True;
success := CkRest_Connect(rest,'test-api.service.hmrc.gov.uk',port,bTls,bAutoReconnect);
if (success <> True) then
begin
Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(CkRest_getConnectFailReason(rest)));
Memo1.Lines.Add(CkRest__lastErrorText(rest));
Exit;
end;
// Build the request body...
json := CkJsonObject_Create();
CkJsonObject_UpdateString(json,'periodKey','A001');
CkJsonObject_UpdateNumber(json,'vatDueSales','105.50');
CkJsonObject_UpdateNumber(json,'vatDueAcquisitions','-100.45');
CkJsonObject_UpdateNumber(json,'totalVatDue','5.05');
CkJsonObject_UpdateNumber(json,'vatReclaimedCurrPeriod','105.15');
CkJsonObject_UpdateNumber(json,'netVatDue','100.10');
CkJsonObject_UpdateInt(json,'totalValueSalesExVAT',300);
CkJsonObject_UpdateInt(json,'totalValuePurchasesExVAT',300);
CkJsonObject_UpdateInt(json,'totalValueGoodsSuppliedExVAT',3000);
CkJsonObject_UpdateInt(json,'totalAcquisitionsExVAT',3000);
CkJsonObject_UpdateBool(json,'finalised',True);
// Add Headers...
CkRest_AddHeader(rest,'Accept','application/vnd.hmrc.1.0+json');
CkRest_AddHeader(rest,'Authorization','Bearer HMRC_ACCESS_TOKEN');
CkRest_AddHeader(rest,'Content-Type','application/json');
sbRequestBody := CkStringBuilder_Create();
CkJsonObject_EmitSb(json,sbRequestBody);
// Set DebugMode so that no request is actually sent.
CkRest_putDebugMode(rest,True);
sbResponseBody := CkStringBuilder_Create();
success := CkRest_FullRequestSb(rest,'POST','/organisations/vat/MY_HMRC_VRN/returns',sbRequestBody,sbResponseBody);
if (success <> True) then
begin
Memo1.Lines.Add(CkRest__lastErrorText(rest));
Exit;
end;
// 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..
bdRequest := CkBinData_Create();
success := CkRest_GetLastDebugRequest(rest,bdRequest);
Memo1.Lines.Add('----');
Memo1.Lines.Add(CkBinData__getString(bdRequest,'utf-8'));
Memo1.Lines.Add('----');
// 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}
//
//
CkRest_Dispose(rest);
CkJsonObject_Dispose(json);
CkStringBuilder_Dispose(sbRequestBody);
CkStringBuilder_Dispose(sbResponseBody);
CkBinData_Dispose(bdRequest);