Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRest
LOCAL lnBTls
LOCAL lnPort
LOCAL lnBAutoReconnect
LOCAL loJson
LOCAL loSbRequestBody
LOCAL loSbResponseBody
LOCAL loBdRequest

lnSuccess = 0

* 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.

loRest = CreateObject('Chilkat.Rest')

* Connect Code...
* URL: https://test-api.service.hmrc.gov.uk/organisations/vat/MY_HMRC_VRN/returns
lnBTls = 1
lnPort = 443
lnBAutoReconnect = 1
lnSuccess = loRest.Connect("test-api.service.hmrc.gov.uk",lnPort,lnBTls,lnBAutoReconnect)
IF (lnSuccess <> 1) THEN
    ? "ConnectFailReason: " + STR(loRest.ConnectFailReason)
    ? loRest.LastErrorText
    RELEASE loRest
    CANCEL
ENDIF

* Build the request body...
loJson = CreateObject('Chilkat.JsonObject')
loJson.UpdateString("periodKey","A001")
loJson.UpdateNumber("vatDueSales","105.50")
loJson.UpdateNumber("vatDueAcquisitions","-100.45")
loJson.UpdateNumber("totalVatDue","5.05")
loJson.UpdateNumber("vatReclaimedCurrPeriod","105.15")
loJson.UpdateNumber("netVatDue","100.10")
loJson.UpdateInt("totalValueSalesExVAT",300)
loJson.UpdateInt("totalValuePurchasesExVAT",300)
loJson.UpdateInt("totalValueGoodsSuppliedExVAT",3000)
loJson.UpdateInt("totalAcquisitionsExVAT",3000)
loJson.UpdateBool("finalised",1)

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

loSbRequestBody = CreateObject('Chilkat.StringBuilder')
loJson.EmitSb(loSbRequestBody)

* Set DebugMode so that no request is actually sent.
loRest.DebugMode = 1

loSbResponseBody = CreateObject('Chilkat.StringBuilder')
lnSuccess = loRest.FullRequestSb("POST","/organisations/vat/MY_HMRC_VRN/returns",loSbRequestBody,loSbResponseBody)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loJson
    RELEASE loSbRequestBody
    RELEASE loSbResponseBody
    CANCEL
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..
loBdRequest = CreateObject('Chilkat.BinData')
lnSuccess = loRest.GetLastDebugRequest(loBdRequest)

? "----"
? loBdRequest.GetString("utf-8")
? "----"

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

RELEASE loRest
RELEASE loJson
RELEASE loSbRequestBody
RELEASE loSbResponseBody
RELEASE loBdRequest