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

Initialize an HTTP Request from a URL

See more HTTP Examples

Demonstrates how to initialize an HTTP request object from a URL.

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

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

procedure RunDemo;
var
  req: THttpRequest;
  i: Integer;
  numParams: Integer;

begin
  req := THttpRequest.Create;

  //  Loads the HTTP request object from a URL
  req.SetFromUrl('https://www.youtube.com/watch?v=fAZdTchQePc&t=45s');

  //  The verb will be "GET"
  WriteLn('verb = ' + req.HttpVerb);
  //  The path will be "/watch"
  WriteLn('path = ' + req.Path);

  //  The output of this loop will be
  //  0) v: fAZdTchQePc
  //  1) t: 45s

  numParams := req.NumParams;
  for i := 0 to numParams - 1 do
    begin
      WriteLn(i + ') ' + req.GetParamName(i) + ': ' + req.GetParamValue(i));
    end;

  //  View the request that would be sent if HttpSReq is called.
  //  The HTTP request will be a GET that looks like this:
  //  
  //      GET /watch?v=fAZdTchQePc&t=45s HTTP/1.1
  //      Host: domain
  //  
  //  Note: The HOST header will automatically get filled in with the actual domain when HttpSReq is called.

  WriteLn(req.GenerateRequestText());

  //  We can add additional params
  req.AddParam('artist','Richard Bona');
  req.AddParam('musicType','Jazz');
  req.AddParam('festival','Estival Jazz Lugano');
  req.AddParam('year','2008');

  //  Now examine the request that would be sent
  //  
  //      GET /watch?v=fAZdTchQePc&t=45s&artist=Richard%20Bona&musicType=Jazz&festival=Estival%20Jazz%20Lugano&year=2008 HTTP/1.1
  //      Host: domain
  //  
  WriteLn(req.GenerateRequestText());

  //  We can remove a parameter:
  req.RemoveParam('t');
  WriteLn(req.GenerateRequestText());

  //  What happens if we change the request from a GET to a POST?
  req.HttpVerb := 'POST';
  //  The request will now look like this:
  //  
  //     POST /watch HTTP/1.1
  //     Host: domain
  //     Content-Length: 93
  //     
  //     v=fAZdTchQePc&artist=Richard%20Bona&musicType=Jazz&festival=Estival%20Jazz%20Lugano&year=2008
  //  
  WriteLn(req.GenerateRequestText());

  //  What happens if we make it a multipart/form-data?
  req.ContentType := 'multipart/form-data';
  //  Now the POST looks like this:
  //     
  //     POST /watch HTTP/1.1
  //     Content-Type: multipart/form-data; boundary=------------020906020106050705030807
  //     Host: domain
  //     Content-Length: 545
  //     
  //     --------------020906020106050705030807
  //     Content-Disposition: form-data; name="v"
  //     
  //     fAZdTchQePc
  //     --------------020906020106050705030807
  //     Content-Disposition: form-data; name="artist"
  //     
  //     Richard Bona
  //     --------------020906020106050705030807
  //     Content-Disposition: form-data; name="musicType"
  //     
  //     Jazz
  //     --------------020906020106050705030807
  //     Content-Disposition: form-data; name="festival"
  //     
  //     Estival Jazz Lugano
  //     --------------020906020106050705030807
  //     Content-Disposition: form-data; name="year"
  //     
  //     2008
  //     --------------020906020106050705030807--

  WriteLn(req.GenerateRequestText());


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