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

HTTP Download any Type of File (binary or text)

See more HTTP Examples

The Download method can download any file type, whether binary (e.g., .zip, .pdf) or text (.xml, .txt), without distinction. It streams the file byte-for-byte from the web server exactly as received. This same process applies to web pages: providing a URL typically viewed in a browser downloads the server's delivered HTML to a file.

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;

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

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  localFilePath: string;
  statusCode: Integer;

begin
  success := False;

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

  http := THttp.Create;
  http.KeepResponseBody := True;

  //  Download a .zip
  localFilePath := '/temp/hamlet.zip';
  success := http.Download('https://www.chilkatsoft.com/hamlet.zip',localFilePath);
  statusCode := http.LastStatus;
  if (success = False) then
    begin
      if (statusCode = 0) then
        begin
          //  Unable to either send the request or get the response.
          WriteLn(http.LastErrorText);
        end
      else
        begin
          //  We got a response, but the status code was not in the 200s
          WriteLn('Response status code: ' + statusCode);
          //  Examine the response body.
          WriteLn('Response body:');
          WriteLn(http.LastResponseBody);
        end;
      WriteLn('Download failed.');

    end
  else
    begin
      WriteLn('Download success, response status = ' + statusCode);
    end;

  //  Download an XML file:
  localFilePath := '/temp/hamlet.xml';
  success := http.Download('https://www.chilkatsoft.com/hamlet.xml',localFilePath);
  //  ...
  //  Check for errors in the same way as shown above..
  //  ...

  WriteLn('OK!');


  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.