goo blog サービス終了のお知らせ 

NB Jogger's blog

NBが好きなのです

【Delphi】Turbo Delphi で TidHttp を利用 して GET / POST HTTPS編

2011-04-03 01:23:26 | プログラム
Indyのコンポーネントを使ってhttpsでサーバーとのデータのやり取りをします。
TIdSSLIOHandlerSocketOpenSSLを使いますが、例によってTurbo Delphiのコンポーネントパレットには載ってないので使うにはちょっと一手間かかります。

libeay32.dll、ssleay32.dll, IdSSLOpenSSLHeaders.pasが必要になります。
事前に上記ファイルを入手し、プログラムと同じフォルダにコピーします。
http://indy.fulgan.com/SSL/ から openssl-0.9.8h-i386-win32-Indy-IntraWebEdition.zip をダウンロードすると、その中に含まれています。
uses
    IdHttp, IdSSLOpenSSL, Classes;

procedure SSLPost(URL: String; Params: TStrings; Response: TStream);
var http: TIdHTTP;
    ssl: TIdSSLIOHandlerSocketOpenSSL;
const
    HTTP_TIMEOUT = 10000;
begin
    http := TIdHTTP.Create;
    ssl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

    ssl.SSLOptions.Method      := sslvTLSv1;
    ssl.SSLOptions.Mode        := sslmUnassigned;
    ssl.SSLOptions.VerifyMode  := [];
    ssl.SSLOptions.VerifyDepth := 0;

    //Timeoutを設定しないとエラーになる
    http.ReadTimeout      := HTTP_TIMEOUT;
    http.ConnectTimeout   := HTTP_TIMEOUT;
    http.IOHandler        := ssl;

    try
        http.Post(URL, Params, Response);
    finally
        http.Free;
        ssl.Free;
    end;
end;
GET の場合は、PostのところをGetに変えます。

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。