Sample code for 30+ languages & platforms
Lazarus Pascal

Http Follow Redirects

See more HTTP Examples

Demonstrates how to automatically follow redirects.

Chilkat Lazarus Pascal Downloads

Lazarus Pascal
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;

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

procedure RunDemo;
var
  http: THttp;
  url: string;
  jsonResponse: string;

begin
  http := THttp.Create;

  //  If you would like to see the HTTP session log to see how 
  //  HTTP redirects were followed.
  http.SessionLogFilename := 'c:/temp/qa_output/sessionLog.txt';

  //  Run the test using this URL.
  //  (Works while httpbin.org keeps the test endpoint available.)

  url := 'https://httpbin.org/redirect-to?url={$redirectUrl}&status_code={$statusCode}';

  http.SetUrlVar('redirectUrl','https://chilkatsoft.com/helloWorld.json');
  http.SetUrlVar('statusCode','302');

  jsonResponse := http.QuickGetStr(url);
  if (http.LastMethodSuccess = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  WriteLn('Response status code: ' + http.LastStatus);
  WriteLn(jsonResponse);

  //  How to tell if the request was redirected, and if so,
  //  what was the final redirect URL?
  WriteLn('Was Redirected: ' + http.WasRedirected);
  WriteLn('Final Redirect URL: ' + http.FinalRedirectUrl);

  //  Output:

  //  Response status code: 200
  //  { "hello": "world" }
  //  Was Redirected: True
  //  Final Redirect URL: https://chilkatsoft.com/helloWorld.json

  //  -----------------------------------------------
  //  Here are the contents of the sessionLog.txt

  //  ---- Sending Sat, 30 Aug 2025 11:41:37 GMT ----
  //  GET /redirect-to?url=https%3A%2F%2Fchilkatsoft.com%2FhelloWorld.json&status_code=302 HTTP/1.1
  //  Host: httpbin.org
  //  Accept: */*
  //  Accept-Encoding: gzip
  //  
  //  
  //  ---- Received Sat, 30 Aug 2025 11:41:37 GMT ----
  //  HTTP/1.1 302 FOUND
  //  Date: Sat, 30 Aug 2025 11:41:38 GMT
  //  Content-Type: text/html; charset=utf-8
  //  Content-Length: 0
  //  Connection: keep-alive
  //  Server: gunicorn/19.9.0
  //  Location: https://chilkatsoft.com/helloWorld.json
  //  Access-Control-Allow-Origin: *
  //  Access-Control-Allow-Credentials: true
  //  
  //  
  //  ---- Sending Sat, 30 Aug 2025 11:41:38 GMT ----
  //  GET /helloWorld.json HTTP/1.1
  //  Host: chilkatsoft.com
  //  Accept: */*
  //  Accept-Encoding: gzip
  //  
  //  
  //  ---- Received Sat, 30 Aug 2025 11:41:38 GMT ----
  //  HTTP/1.1 200 OK
  //  Content-Type: application/json
  //  Last-Modified: Sun, 20 Aug 2023 11:36:27 GMT
  //  Accept-Ranges: bytes
  //  ETag: "34c27f8e5ad3d91:0"
  //  Server: Microsoft-IIS/10.0
  //  X-Powered-By: ASP.NET
  //  Date: Sat, 30 Aug 2025 11:41:38 GMT
  //  Content-Length: 22
  //  
  //  { "hello": "world" }


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