ファイヤープロジェクト
HttpClient入門(HttpClient3.0-rc3)
2005-08-08T00:30+09:00   matsu
HttpClientを使用したアプリケーションを作成するための準備と,アプリケーションプログラムの概要を調査してみた.
HttpClientは,Jakarta Commonsの一部で,Httpクライアントアプリケーションの構築をサポートするクラスライブラリである. Httpは現在もっとも重要なプロトコルであるにもかかわらず,java.net以下のクラスは基本的な機能しか提供していない. HttpClientはより高機能を提供する. 具体的には本家にいろいろ書いてある. 高機能を持つHttpClientを使用すると,Webブラウザや(Httpバインディング)Webサービスクライアントの作成が容易になる.
本頁では,サンプルを作成を通して,HttpClientを使用するアプリケーションを構築するための準備とアプリケーションプログラムのコードの概要について記述する. まず,HttpClientを使用するためには,HttpClientが依存するクラスライブラリを容易する必要がある. HttpClientは以下のクラスライブラリに依存する.
  • commons-codec
  • commons-logging
  • junit
サンプルでは,これらをダウンロードするantターゲットを容易した.
$ ant preparelib
これで上記クラスクラスライブラリがディレクトリdownloadにダウンロードされ,展開されてjarファイルがディレクトリlibに配置される.
$> ls download
codec.zip  commons-codec-1.3
commons-httpclient-3.0-rc3  commons-logging-1.0.4  httpclient.zip  logging.zip

$> ls lib
commons-codec-1.3.jar  commons-httpclient-3.0-rc3.jar  commons-logging-api.jar  commons-logging.jar
HttpClientを使用するための準備は以上である(※).
※ 今回は執筆時点での最新晩3.0-rc3を使用している. HttpClient3.0ではJDK 3.0以降が必要であるが,今回の記述では割愛している.
今回のサンプルを以下にしめす.
このサンプルは,指定したURLにHTTPのGETメソッドを発行し,回答をダンプするものである. 実行結果を以下にしめす.
> java -jar httpclientsample.jar http://www.example.com
statusCode = 200
headers[0] = Date: Sun, 07 Aug 2005 15:08:17 GMT

headers[1] = Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)

headers[2] = Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT

headers[3] = ETag: "3f80f-1b6-3e1cb03b"

headers[4] = Accept-Ranges: bytes

headers[5] = Content-Length: 438

headers[6] = Connection: close

headers[7] = Content-Type: text/html

<HTML>
<HEAD>
  <TITLE>Example Web Page</TITLE>
</HEAD> 
<body>  
<p>You have reached this web page by typing &quot;example.com&quot;,
&quot;example.net&quot;,
  or &quot;example.org&quot; into your web browser.</p>
<p>These domain names are reserved for use in documentation and are not available 
  for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 
  2606</a>, Section 3.</p>
</BODY>
</HTML>
中心となるクラス,インタフェースとしてHttpClientとHttpMethodがある. HttpClientは,文字通りHTTPクライアントを表すクラスであり,HTTPの状態と接続を保持し,HttpMethodを受け入れ,実行する主体である. HttpMethodはHTTPのメソッド(DELETE, GET, HEAD, POST, PUT, TRACEなど)を表現するインタフェースである. 実装クラスはorg.apache.commons.httpclient.methodsにある. 大まかな流れとして,
  1. HttpClientオブジェクトの作成.
  2. HttpMethodの作成と設定.
  3. HttpClientにHttpMethodの実行を指示.
  4. HttpMethodから回答取得.
  5. HttpMethodから接続を開放し,取得した回答を処理する.
HttpMethodから,回答として大体以下のものを取得できる.
  • ステータス
  • ヘッダ
  • 本文
  • フッタ
回答の取得メソッドには,サンプルで使用している以外のものもあるので,JavaDocで確認されたい.
matsu(C)
Since 2002
Mail to matsu