Http Get Winsock Delphi

執筆:2012.08.07
編集:2012.08.07


こんな時に使えます。
・Indyを使いたくないとき
  サイズが大きくなる。
・Indyのライセンスが嫌い
・Indyのバグにつきあいたくない

Indyだと
 s := IdHTTP1.Get(URL);
の1行で済みます。
※文字コードが破壊される場合は、
   別記事の「Win32 SJISで、Idhttp.Getすると壊れる理由」
   を参照のこと

Wininet.dllの
InternetOpenUrl
でも、似たようなことはできますが
今回は割愛します。

簡易の Http 取得関数を作ってみましょう

TTcpClientを使うと受信できないことがあるので
TClientWinSocketを使うのがミソです。

下記のサンプルをuses節に加えて
 s := HttpGetContents(Hostname , URI);
の1行で済みます。

ただし、サンプルは、
https通信未対応です。
リダイレクトやエラー処理も入っていません

また、 HTTP/1.1でリクエストすると
Contents取得部の処理が面倒なので
HTTP/1.0でリクエストしています。

» 続きを読む