Sample code for 30+ languages & platforms
AutoIt

Debug REST HTTP Request

See more REST Examples

Demonstrates how to generate the HTTP Request (with all headers intact) without actually sending the request.

Note: This example requires Chilkat v9.5.0.77 or later.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = 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.

$oRest = ObjCreate("Chilkat.Rest")

;  Connect Code...
;  URL: https://test-api.service.hmrc.gov.uk/organisations/vat/MY_HMRC_VRN/returns
Local $bTls = True
Local $iPort = 443
Local $bAutoReconnect = True
$bSuccess = $oRest.Connect("test-api.service.hmrc.gov.uk",$iPort,$bTls,$bAutoReconnect)
If ($bSuccess <> True) Then
    ConsoleWrite("ConnectFailReason: " & $oRest.ConnectFailReason & @CRLF)
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

;  Build the request body...
$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.UpdateString("periodKey","A001")
$oJson.UpdateNumber("vatDueSales","105.50")
$oJson.UpdateNumber("vatDueAcquisitions","-100.45")
$oJson.UpdateNumber("totalVatDue","5.05")
$oJson.UpdateNumber("vatReclaimedCurrPeriod","105.15")
$oJson.UpdateNumber("netVatDue","100.10")
$oJson.UpdateInt("totalValueSalesExVAT",300)
$oJson.UpdateInt("totalValuePurchasesExVAT",300)
$oJson.UpdateInt("totalValueGoodsSuppliedExVAT",3000)
$oJson.UpdateInt("totalAcquisitionsExVAT",3000)
$oJson.UpdateBool("finalised",True)

;  Add Headers...
$oRest.AddHeader("Accept","application/vnd.hmrc.1.0+json")
$oRest.AddHeader("Authorization","Bearer HMRC_ACCESS_TOKEN")
$oRest.AddHeader("Content-Type","application/json")

$oSbRequestBody = ObjCreate("Chilkat.StringBuilder")
$oJson.EmitSb($oSbRequestBody)

;  Set DebugMode so that no request is actually sent.
$oRest.DebugMode = True

$oSbResponseBody = ObjCreate("Chilkat.StringBuilder")
$bSuccess = $oRest.FullRequestSb("POST","/organisations/vat/MY_HMRC_VRN/returns",$oSbRequestBody,$oSbResponseBody)
If ($bSuccess <> True) Then
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

;  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..
$oBdRequest = ObjCreate("Chilkat.BinData")
$bSuccess = $oRest.GetLastDebugRequest($oBdRequest)

ConsoleWrite("----" & @CRLF)
ConsoleWrite($oBdRequest.GetString("utf-8") & @CRLF)
ConsoleWrite("----" & @CRLF)

;  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}
;  
;