Sample code for 30+ languages & platforms
Delphi DLL

Send JSON REST Request, Get JSON Response

See more REST Examples

Demonstrates sending a RESTful JSON request, and receiving a JSON response. This example will create a bucket in Google Cloud Storage (which involves sending and receiving JSON).

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, AuthGoogle, JsonObject, Rest;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
gAuth: HCkAuthGoogle;
rest: HCkRest;
bAutoReconnect: Boolean;
jsonReqBody: HCkJsonObject;
objVersioning: HCkJsonObject;
jsonResponseStr: PWideChar;

begin
success := False;

// This example will create a bucket in Google Cloud Storage.

// It requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

gAuth := CkAuthGoogle_Create();
// Obtain an access token as shown in one of the following examples:
// See Get Access Token using a Service Account JSON Key
// See Get Access Token using a P12 File

rest := CkRest_Create();

// Connect using TLS.
bAutoReconnect := True;
success := CkRest_Connect(rest,'www.googleapis.com',443,True,bAutoReconnect);

// Provide the authentication credentials (i.e. the access key)
success := CkRest_SetAuthGoogle(rest,gAuth);

// Build the JSON request body for creating a bucket.
// The only required property is the "name", but we'll add more
// to make a better example..
jsonReqBody := CkJsonObject_Create();
CkJsonObject_AppendString(jsonReqBody,'name','chilkat-bucket-c');
CkJsonObject_AppendString(jsonReqBody,'kind','storage#bucket');
CkJsonObject_AppendString(jsonReqBody,'location','US');

objVersioning := CkJsonObject_Create();
CkJsonObject_AppendObject2(jsonReqBody,'versioning',objVersioning);
CkJsonObject_AppendBool(objVersioning,'enabled',True);

// Show the HTTP request body we'll be sending.
Memo1.Lines.Add(CkJsonObject__emit(jsonReqBody));

// Add the required query parameter.
// See https://cloud.google.com/storage/docs/json_api/v1/buckets/insert
success := CkRest_AddQueryParam(rest,'project','chilkattest-1050');

// Add the Content-Type HTTP request header.
success := CkRest_AddHeader(rest,'Content-Type','application/json; charset=UTF-8');

jsonResponseStr := CkRest__fullRequestString(rest,'POST','/storage/v1/b',CkJsonObject__emit(jsonReqBody));
if (CkRest_getLastMethodSuccess(rest) = False) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

// Show the JSON response.  (See below for a sample JSON response.)
Memo1.Lines.Add('Json Response: ' + jsonResponseStr);

// {
//  "kind": "storage#bucket",
//  "id": "chilkat-bucket-c",
//  "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-bucket-c",
//  "projectNumber": "999992999999",
//  "name": "chilkat-bucket-c",
//  "timeCreated": "2016-04-29T21:08:10.451Z",
//  "updated": "2016-04-29T21:08:10.451Z",
//  "metageneration": "1",
//  "owner": {
//   "entity": "project-owners-999992999999"
//  },
//  "location": "US",
//  "versioning": {
//   "enabled": true
//  },
//  "storageClass": "STANDARD",
//  "etag": "CAE="
// }
// 

CkAuthGoogle_Dispose(gAuth);
CkRest_Dispose(rest);
CkJsonObject_Dispose(jsonReqBody);
CkJsonObject_Dispose(objVersioning);

end;