Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


11.4.4 HTTPヘッダの設定

クライアントAPIには,HTTPリクエストオブジェクトにHTTPヘッダを設定するためのさまざまなメソッドを提供しています。サポートしているメソッドの詳細については「25.1 クライアントAPIのインタフェースおよびクラスのサポート範囲」を参照してください。なお,この説明でのHTTPリクエストオブジェクトとは,次のどちらかを指します。

HTTPリクエストオブジェクトには,HTTPヘッダと対応する値を保持するMultivaluedMapオブジェクトが含まれています。

HTTPヘッダを保持するMultivaluedMapオブジェクトがどのように初期化されるのかを次の図で説明します。

図11‒5 MultivaluedMapオブジェクトの初期化の仕組み

[図データ]

この図では,ユーザプログラムはClientRequestクラスのcreate()スタティックメソッドまたはClientクラスのresource()メソッドを使用してHTTPリクエストオブジェクトを生成しています。

この場合,MultivaluedMapオブジェクトは空の状態で初期化されます。

MultivaluedMapオブジェクトにHTTPヘッダを設定する例を次の図に示します。

例1

[図データ]

例2

[図データ]

例3

[図データ]

例4

[図データ]

例1〜例4のどの方法でも,ユーザプログラムは,"text/xml"と"text/plain"を値とするAccept HTTPヘッダを持つHTTPリクエストオブジェクトを生成できます。Accept-Language HTTPヘッダとCookie HTTPヘッダについても同様です。なお,Accept-Language HTTPヘッダとCookie HTTPヘッダの場合はacceptメソッドをそれぞれacceptLanguage()メソッドまたはcookie()メソッドに読み替えてください。

Content-Type HTTPヘッダの場合,例1と例3の動作は次に示すとおりになります。

例1

[図データ]

例3

[図データ]

どちらの場合でも,HTTPリクエストオブジェクトに設定されるContent-Type HTTPヘッダの値は"text/plain"です。なお,Content-Type HTTPヘッダは値を一つしか持てないため,例2と例4の方法は利用できません。

HTTP通信に先立って,HTTPリクエストオブジェクトに追加されたすべてのHTTPヘッダとその値は,HttpURLConnectionオブジェクトに設定されます。仕組みを次の図で説明します。

[図データ]

それぞれのHTTPヘッダには,HTTPリクエストオブジェクトに含まれる対応するHTTPヘッダの値が設定されます。なお,この場合,HTTPリクエストオブジェクトに含まれる対応するHTTPヘッダの値がnullでなければ,toString()メソッドの戻り値に設定されます。JAX-RSエンジンはHTTPヘッダの値を検証しません。標準仕様に従ってHTTPヘッダの値をHTTPリクエストオブジェクトに設定してください。

なお,HTTP通信を行うまでに,特定のHTTPヘッダをHTTPリクエストオブジェクトに設定しなかった場合の動作は,HTTPヘッダをHttpURLConnectionオブジェクトに設定しなかった場合と同様です。