クラスCookieManager


public class CookieManager extends CookieHandler
CookieManagerはCookieHandlerの具象実装を提供し、CookieのストレージとCookieの受け入れ/拒否に関するポリシーとを分離します。 CookieManagerは、ストレージを管理するCookieStoreと、Cookieの受け入れ/拒否に関するポリシー決定を行うCookiePolicyオブジェクトとを使って初期化されます。

java.netパッケージにおけるHTTP Cookie管理は、次のようになっています。

                 use
CookieHandler <------- HttpURLConnection
      ^
      | impl
      |         use
CookieManager -------> CookiePolicy
            |   use
            |--------> HttpCookie
            |              ^
            |              | use
            |   use        |
            |--------> CookieStore
                           ^
                           | impl
                           |
                 Internal in-memory implementation
  • CookieHandlerがCookie管理の中核となる。 ユーザーは、CookieHandler.set Defaultを呼び出して、concrete CookieHandler実装を使用するように設定できます。
  • CookiePolicy.shouldAcceptがCookieManager.putによって呼び出され、あるCookieを受け入れてCookieストア内に格納すべきかどうかが確認される。 ユーザーは、3つの定義済みCookiePolicy、つまりACCEPT_ALL、ACCEPT_NONE、ACCEPT_ORIGINAL_SERVER、のいずれかを使用することもできるし、ユーザー独自のCookiePolicy実装を定義し、CookieManagerにそれを使用するよう指示することもできる。
  • CookieStoreは、受け入れられたすべてのHTTP Cookieの格納場所となる。 作成時に指定されなかった場合、CookieManagerインスタンスは内部のインメモリー実装を使用する。 また、ユーザーが別のものを実装し、CookieManagerにそれを使用するよう指示することもできる。
  • 現時点では、CookieManagerによって使用されているのは、CookieStore.add(URI, HttpCookie)とCookieStore.get(URI)だけである。 その他は完全性を目的としており、より高度なCookieStore実装(NetscapeCookieStoreなど)で必要になる場合があります。

ユーザーが独自のHTTP Cookie管理動作を組み込む方法としては、さまざまなものが考えられます。次に例を示します。

  • CookieHandler.setDefaultを使って新しいCookieHandler実装を設定する。
  • CookieManagerをデフォルトのCookieHandler実装にするが、ユーザー独自のCookieStoreCookiePolicyを実装し、デフォルトのCookieManagerにそれらを使用するよう指示する。
          // this should be done at the beginning of an HTTP session
          CookieHandler.setDefault(new CookieManager(new MyCookieStore(), new MyCookiePolicy()));
        
  • CookieManagerをデフォルトのCookieHandler実装にするが、カスタマイズされたCookiePolicyを使用する。
          // this should be done at the beginning of an HTTP session
          CookieHandler.setDefault(new CookieManager());
          // this can be done at any point of an HTTP session
          ((CookieManager)CookieHandler.getDefault()).setCookiePolicy(new MyCookiePolicy());
        

この実装は、RFC 2965のセクション3.3に準拠しています。

導入されたバージョン:
1.6
外部仕様
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    新しいCookieマネージャを作成します。
    CookieManager(CookieStore store, CookiePolicy cookiePolicy)
    指定されたCookieストアとCookieポリシーを使って新しいCookieマネージャを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    get(URI uri, Map<String, List<String>> requestHeaders)
    要求ヘッダー内に指定されたURIのCookieキャッシュから適用可能なすべてのCookieを取得します。
    現在のCookieストアを取得するためのもの。
    void
    put(URI uri, Map<String, List<String>> responseHeaders)
    応答ヘッダー内に存在するSet-Cookie2という名前の応答ヘッダー・フィールドなど、適用可能なすべてのCookieをCookieキャッシュ内に設定します。
    void
    このCookieマネージャのCookieポリシーを設定するためのもの。

    クラスで宣言されたメソッド CookieHandler

    getDefault, setDefault
    修飾子と型
    メソッド
    説明
    システム全体のCookieハンドラを取得します。
    static void
    システム全体のCookieハンドラを設定(または設定解除)します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • CookieManager

      public CookieManager()
      新しいCookieマネージャを作成します。

      このコンストラクタは、デフォルトのCookieストアと受け入れポリシーを使って新しいCookieマネージャを作成します。 その効果はCookieManager(null, null)と同じです。

    • CookieManager

      public CookieManager(CookieStore store, CookiePolicy cookiePolicy)
      指定されたCookieストアとCookieポリシーを使って新しいCookieマネージャを作成します。
      パラメータ:
      store - Cookieマネージャが使用すべきCookieStorenullの場合、CookieマネージャはデフォルトのインメモリーCookieStore実装を使用します。
      cookiePolicy - Cookieマネージャがポリシー・コールバックとして使用すべきCookiePolicyインスタンス。nullの場合、ACCEPT_ORIGINAL_SERVERが使用されます。
  • メソッドの詳細

    • setCookiePolicy

      public void setCookiePolicy(CookiePolicy cookiePolicy)
      このCookieマネージャのCookieポリシーを設定するためのもの。

      CookieManagerのインスタンスは、デフォルトでcookieポリシーACCEPT_ORIGINAL_SERVERを持ちます。 ユーザーはいつでもこのメソッドを呼び出して別のCookieポリシーを設定できます。

      パラメータ:
      cookiePolicy - Cookieポリシー。 nullも可能ですが、現在のCookieポリシーに対する効果はありません。
    • getCookieStore

      public CookieStore getCookieStore()
      現在のCookieストアを取得するためのもの。
      戻り値:
      Cookieマネージャが現在使用しているCookieストア。
    • get

      public Map<String, List<String>> get(URI uri, Map<String, List<String>> requestHeaders) throws IOException
      次のクラスからコピーされた説明: CookieHandler
      要求ヘッダー内に指定されたURIのCookieキャッシュから適用可能なすべてのCookieを取得します。

      引数として渡されるURIは、Cookieの使用目的を指定します。 たとえば、スキームにはCookieがhttpまたはhttpsのどちらで送信されるのかや、Javascriptなどの別のコンテキストで使用されるのかを反映するべきです。 ホスト部分にはCookieの転送先またはJavascriptの場合はそれらのオリジンを反映するべきです。

      どれを返すかを決定する際に、URIおよびCookieの属性とセキュリティ設定を考慮することは、実装に任されています。

      HTTPプロトコルの実装者は、Cookieの選択に関係するすべての要求ヘッダーが追加されてから要求が送信されるまでの間に、必ずこのメソッドが呼び出されるようにしてください。

      定義:
      get、クラスCookieHandler
      パラメータ:
      uri - Cookieの使用目的を表すURI
      requestHeaders - リクエスト・ヘッダー・フィールド名から現在のリクエスト・ヘッダーを表すフィールド値のリストへのマップ
      戻り値:
      フィールド名「Cookie」または「Cookie2」を持つ状態管理ヘッダーから状態情報が格納されたCookieのリストへの不変のマップ
      スロー:
      IOException - 入出力エラーが発生した場合
      関連項目:
    • put

      public void put(URI uri, Map<String, List<String>> responseHeaders) throws IOException
      次のクラスからコピーされた説明: CookieHandler
      応答ヘッダー内に存在するSet-Cookie2という名前の応答ヘッダー・フィールドなど、適用可能なすべてのCookieをCookieキャッシュ内に設定します。
      定義:
      put、クラスCookieHandler
      パラメータ:
      uri - Cookieの生成元のURI
      responseHeaders - 返された応答ヘッダー・フィールドを表す、フィールド名からフィールド値のリストへの不変のマップ
      スロー:
      IOException - 入出力エラーが発生した場合
      関連項目: