Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

HTTP POST JSON and Parse JSON Response

See more HTTP Examples

Demonstrates how to send a JSON POST and then parse the JSON response.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.HttpResponse,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  json: TJsonObject;
  http: THttp;
  resp: THttpResponse;
  jsonResp: TJsonObject;
  lifeAmount: string;
  lifeResidualAmount: string;

begin
  success := False;

  //  This example assumes the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  json := TJsonObject.Create;

  success := json.LoadFile('qa_data/json/jsonBodyForHttpPost.json');
  if (success = False) then
    begin
      WriteLn(json.LastErrorText);
      Exit;
    end;

  http := THttp.Create;

  resp := THttpResponse.Create;
  success := http.HttpJson('POST','https://test.something.com/XYZ/API/v1/CreditInsuranceCalculator/CalculatePremiums',json,'application/json',resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  jsonResp := TJsonObject.Create;
  jsonResp.Load(resp.BodyStr);

  jsonResp.EmitCompact := False;
  WriteLn(jsonResp.Emit());

  //  The JSON response to be parsed looks like this:
  //  {
  //    "LifeAmount": 513.85,
  //    "LifeResidualAmount": 123.38,
  //    "CriticalIllnessAmount": 0,
  //    "CriticalIllnessResidualAmount": 0,
  //    "DisabilityAmount": 881.70,
  //    "PolicyFee": 0.00,
  //    "PolicyFeeSecondary": 0,
  //    "PolicyFeeHidden": 50.00,
  //    "PolicyFeeHiddenSecondary": 0
  //  }

  //  We can get the floating point numbers as strings.  Then convert to double
  //  using the appropriate string-to-double conversion for your programming language.
  //  For example, in C++ use atof.  In C# use Convert.ToDouble.  
  lifeAmount := jsonResp.StringOf('LifeAmount');
  lifeResidualAmount := jsonResp.StringOf('LifeResidualAmount');

  WriteLn('LifeAmount = ' + lifeAmount);
  WriteLn('LifeResidualAmount = ' + lifeResidualAmount);


  json.Free;
  http.Free;
  resp.Free;
  jsonResp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.