HTTPクライアントとして使うjersey-client

JAX-RSのリファレンス実装であるJerseyには、RESTサービスを提供するサーバ側の実装(jersey-server)と、RESTサービスを利用するクライアント側の実装(jersey-client)とがあります。

RESTサービスではHTTPを介してサーバとクライアントとがやりとりしますから、当然jersey-clientはHTTPクライアントの機能を備えています。今回はJerseyの使い方の番外編として、RESTサービスを抜きにHTTPクライアントとしても、jersey-clientは使い勝手が良いという話をします。

ちなみに、JAX-RS 1.1にはクライアント側のAPIは定義されておらず、今年(2012年)のQ2にリリース予定のJAX-RS 2.0から定義されることになっています。(本稿執筆時点ではEarly Draft Reviewの段階)

まず使ってみる

何はともあれ、使ってみましょう。

Mavenを使用する場合は、以下のdependencyを追加します。

<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-client</artifactId>
	<version>1.11</version>
</dependency>

あるいは、http://jersey.java.net/からjarをダウンロードしてクラスパスに含めます。

まずは簡単なところで、あるサイトのHTMLを取得したいとしましょう。その場合以下のようなコードになります。

Client c = Client.create();
WebResource r = c.resource("http://www.example.com/");
String html = r.get(String.class);

これだけです。説明も不要なくらいごく簡潔ですね。ClientとWebResource

  1. Clientインスタンスを作る
  2. URLからWebResourceインスタンスを作る
  3. リクエストの結果をオブジェクトとして取得する

基本的にはこの3ステップで進んでいきます。 続きを読む HTTPクライアントとして使うjersey-client