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

Simple REST Example

See more REST Examples

Demonstrates a very simple RESTful API call to get a stock time series daily (quotes) from Alpha Vantage.

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.Rest;

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

procedure RunDemo;
var
  success: Boolean;
  rest: TRest;
  bTls: Boolean;
  port: Integer;
  bAutoReconnect: Boolean;
  responseJson: string;

begin
  success := False;

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

  rest := TRest.Create;

  //  Connect to the REST server.
  bTls := True;
  port := 443;
  bAutoReconnect := True;
  success := rest.Connect('www.alphavantage.co',port,bTls,bAutoReconnect);
  if (success <> True) then
    begin
      WriteLn(rest.LastErrorText);
      Exit;
    end;

  //  Get a stock quote:
  //  Sending GET request to https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&apikey=my_api_key
  success := rest.AddQueryParam('function','TIME_SERIES_DAILY');
  success := rest.AddQueryParam('symbol','AAPL');
  success := rest.AddQueryParam('apikey','my_api_key');
  responseJson := rest.FullRequestNoBody('GET','/query');
  if (rest.LastMethodSuccess <> True) then
    begin
      WriteLn(rest.LastErrorText);
      Exit;
    end;

  WriteLn(responseJson);

  //  Sample response:
  //  {
  //      "Meta Data": {
  //          "1. Information": "Daily Prices (open, high, low, close) and Volumes",
  //          "2. Symbol": "AAPL",
  //          "3. Last Refreshed": "2019-12-06",
  //          "4. Output Size": "Compact",
  //          "5. Time Zone": "US/Eastern"
  //      },
  //      "Time Series (Daily)": {
  //          "2019-12-06": {
  //              "1. open": "267.4800",
  //              "2. high": "271.0000",
  //              "3. low": "267.3000",
  //              "4. close": "270.7100",
  //              "5. volume": "25447644"
  //          },
  //          "2019-12-05": {
  //              "1. open": "263.7900",
  //              "2. high": "265.8900",
  //              "3. low": "262.7300",
  //              "4. close": "265.5800",
  //              "5. volume": "18661343"
  //          },
  //          "2019-12-04": {
  //              "1. open": "261.0700",
  //              "2. high": "263.3100",
  //              "3. low": "260.6800",
  //              "4. close": "261.7400",
  //              "5. volume": "16810388"
  //          },
  //  ...
  //          "2019-07-18": {
  //              "1. open": "204.0000",
  //              "2. high": "205.8800",
  //              "3. low": "203.7000",
  //              "4. close": "205.6600",
  //              "5. volume": "18582161"
  //          }
  //      }
  //  }


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