11.4.2 RESTful Webサービス用クライアントAPIの仕組み

RESTful Webサービス用クライアントAPIは,HttpURLConnection/HttpsURLConnectionクラスをラップしており,実際のHTTP通信についてはJDKが行っています。なお,以降では特に明記のないかぎり,HttpURLConnection/HttpsURLConnectionをまとめてHttpURLConnectionと呼びます。

仕組みについて次の図に示します。

[図データ]

図中の1.および2.では次の処理を行っています。

1.
  • 接続タイムアウトなどのプロパティを設定します。
  • HTTPヘッダを追加します。
  • HTTPリクエストのエンティティボディを,HttpURLConnectionから取得した出力ストリームを介して送信します。
2.
  • HTTPヘッダを取得します。
  • HTTPレスポンスのエンティティボディを,HttpURLConnectionから取得した入力ストリームを介して受信します。
<この項の構成>
(1) RESTful Webサービス用クライアントAPIとユーザプログラムの関係
(2) RESTful Webサービス用クライアントAPIとJDKの関係

(1) RESTful Webサービス用クライアントAPIとユーザプログラムの関係

RESTful Webサービス用クライアントAPIは,エンティティボディリーダやエンティティボディライタを使用して,JavaオブジェクトやHTTPリクエストを相互にマーシャル・アンマーシャルしています。このため,ユーザプログラムが入力ストリームや出力ストリームを直接操作する必要はありません。

(2) RESTful Webサービス用クライアントAPIとJDKの関係

RESTful Webサービス用クライアントAPIは,トランスポート層の処理をHttpURLConnectionに委譲しています。また,プロパティやHTTPヘッダを設定するためのさまざまなビルトインメソッドを提供していますが,ビルトインメソッドに指定した値はそのままHttpURLConnectionに設定します。そのため,実際のHTTP通信やビルトインメソッドに指定した値を使用した処理はJDKが行います。