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

curl with Path Variables and Query Param Variables

See more CURL Examples

This example demonstrates using variables located in the path and query params with the {{variable_name}} syntax.

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.JsonObject,
  Chilkat.HttpCurl;

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

procedure RunDemo;
var
  success: Boolean;
  targetCurl: string;
  httpCurl: THttpCurl;
  responseJson: TJsonObject;
  statusCode: Integer;

begin
  success := False;

  //  Variables can occur in the path and query params.  
  //  Variable names are enclosed between {{ and }}

  //   curl -X GET https://httpbin.org/{{verb}}?id={id_value}}
  targetCurl := 'curl -X GET https://httpbin.org/{{verb}}?id={{id_value}}';

  httpCurl := THttpCurl.Create;

  //  Provide values for variables.
  //  In this example, "verb" is a path variable, and "id_value" is a query param variable.
  httpCurl.SetVar('verb','get');
  httpCurl.SetVar('id_value','123');

  //  Run the curl command.
  success := httpCurl.DoYourThing(targetCurl);
  if (success = False) then
    begin
      WriteLn(httpCurl.LastErrorText);
      Exit;
    end;

  responseJson := TJsonObject.Create;
  responseJson.EmitCompact := False;

  statusCode := httpCurl.StatusCode;
  WriteLn('response status code: ' + statusCode);

  httpCurl.GetResponseJson(responseJson);
  WriteLn(responseJson.Emit());

  //  Output:

  //  response status code: 200
  //  {
  //    "args": {
  //      "id": "123"
  //    },
  //    "headers": {
  //      "Host": "httpbin.org",
  //      "X-Amzn-Trace-Id": "Root=1-69e92914-5d4136d240f2f7fe1056f126"
  //    },
  //    "origin": "222.222.222.222",
  //    "url": "https://httpbin.org/get?id=123"
  //  }


  httpCurl.Free;
  responseJson.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.