DelphiでHTTPS経由でファイルをダウンロードする

Indyコンポーネントのおさらい。DelphiHTTPS経由でファイルをダウンロードする。
HTTPS経由だとIOHandlerをSSL対応のものを指定しないといけない。

idhttp_test.dpr

program idhttp_test;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, System.Classes, IdHTTP, IdSSLOpenSSL;

var
  URL: String;
  HTTP: TIdHTTP;
  SSL: TIdSSLIOHandlerSocketOpenSSL;
  FileStream: TFileStream;

begin
  try
    if ParamCount < 1 then
      Exit;
    URL := ParamStr(1);
    HTTP := TIdHTTP.Create;
    SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
    try
      HTTP.IOHandler := SSL;
      FileStream := TFileStream.Create('output' + ExtractFileExt(URL), fmCreate);
      try
        HTTP.Get(URL, FileStream);
      finally
        FileStream.Free;
      end;
    finally
      HTTP.Free;
      SSL.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

実行結果

引数にURLを指定するとファイルがダウンロードされる。Win32, Win64, OSXで動作確認。

$ ./idhttp_test https://dl.dropbox.com/u/370615/cb400sf.jpg