Module java.base
Package java.net

## Class CookieManager

- java.lang.Object
- - java.net.CookieHandler
  - - java.net.CookieManager

-     public class CookieManager
      extends CookieHandler

  CookieManager provides a concrete implementation of `CookieHandler`, which separates the storage of cookies from the policy surrounding accepting and rejecting cookies. A CookieManager is initialized with a `CookieStore` which manages storage, and a `CookiePolicy` object, which makes policy decisions on cookie acceptance/rejection.

  The HTTP cookie management in java.net package looks like:

  >                       use
  >      CookieHandler <------- HttpURLConnection
  >            ^
  >            | impl
  >            |         use
  >      CookieManager -------> CookiePolicy
  >                  |   use
  >                  |--------> HttpCookie
  >                  |              ^
  >                  |              | use
  >                  |   use        |
  >                  |--------> CookieStore
  >                                 ^
  >                                 | impl
  >                                 |
  >                       Internal in-memory implementation

  > - CookieHandler is at the core of cookie management. User can call CookieHandler.setDefault to set a concrete CookieHandler implementation to be used.
  > - CookiePolicy.shouldAccept will be called by CookieManager.put to see whether or not one cookie should be accepted and put into cookie store. User can use any of three pre-defined CookiePolicy, namely ACCEPT_ALL, ACCEPT_NONE and ACCEPT_ORIGINAL_SERVER, or user can define his own CookiePolicy implementation and tell CookieManager to use it.
  > - CookieStore is the place where any accepted HTTP cookie is stored in. If not specified when created, a CookieManager instance will use an internal in-memory implementation. Or user can implements one and tell CookieManager to use it.
  > - Currently, only CookieStore.add(URI, HttpCookie) and CookieStore.get(URI) are used by CookieManager. Others are for completeness and might be needed by a more sophisticated CookieStore implementation, e.g. a NetscapeCookieStore.

  There're various ways user can hook up his own HTTP cookie management behavior, e.g.

  > - Use CookieHandler.setDefault to set a brand new `CookieHandler` implementation
  > - Let CookieManager be the default `CookieHandler` implementation, but implement user's own `CookieStore` and `CookiePolicy` and tell default CookieManager to use them:

  >   >            // this should be done at the beginning of an HTTP session
  >   >            CookieHandler.setDefault(new CookieManager(new MyCookieStore(), new MyCookiePolicy()));

  > - Let CookieManager be the default `CookieHandler` implementation, but use customized `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());

  The implementation conforms to RFC 2965, section 3.3.

  Since:
    1.6
  See Also:
    `CookiePolicy`

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CookieManager()` | Create a new cookie manager.
    `CookieManager​(CookieStore store, CookiePolicy cookiePolicy)` | Create a new cookie manager with specified cookie store and cookie policy.

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `CookieStore` | `getCookieStore()` | To retrieve current cookie store.
    `void` | `setCookiePolicy​(CookiePolicy cookiePolicy)` | To set the cookie policy of this cookie manager.

    - ### Methods declared in class java.net.CookieHandler

      `get, getDefault, put, setDefault`

    - ### Methods declared in class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CookieManager

          public CookieManager()

      Create a new cookie manager.

      This constructor will create new cookie manager with default cookie store and accept policy. The effect is same as `CookieManager(null, null)`.

    - #### CookieManager

          public CookieManager​(CookieStore store,
                               CookiePolicy cookiePolicy)

      Create a new cookie manager with specified cookie store and cookie policy.
      Parameters:
        `store` - a `CookieStore` to be used by cookie manager. if `null`, cookie manager will use a default one, which is an in-memory CookieStore implementation.
        `cookiePolicy` - a `CookiePolicy` instance to be used by cookie manager as policy callback. if `null`, ACCEPT_ORIGINAL_SERVER will be used.

  - ### Method Detail

    - #### setCookiePolicy

          public void setCookiePolicy​(CookiePolicy cookiePolicy)

      To set the cookie policy of this cookie manager.

      A instance of `CookieManager` will have cookie policy ACCEPT_ORIGINAL_SERVER by default. Users always can call this method to set another cookie policy.

      Parameters:
        `cookiePolicy` - the cookie policy. Can be `null`, which has no effects on current cookie policy.

    - #### getCookieStore

          public CookieStore getCookieStore()

      To retrieve current cookie store.
      Returns:
        the cookie store currently used by cookie manager.