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
CookieHandlerimplementation- Let CookieManager be the default
CookieHandlerimplementation, but implement user's ownCookieStoreandCookiePolicyand 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
CookieHandlerimplementation, but use customizedCookiePolicy:// 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.
CookiePolicy
| Modifier and Type | Class and Description |
|---|---|
| pack-priv static class |
| Modifier and Type | Field and Description |
|---|---|
| private CookieStore | |
| private CookiePolicy |
| Access | Constructor and Description |
|---|---|
| public | |
| public | CookieManager(CookieStore
a store, CookiePolicy CookieStore to be used by cookie manager.
if null, cookie manager will use a default one,
which is an in-memory CookieStore implementation.a cookiePolicy)CookiePolicy instance
to be used by cookie manager as policy callback.
if null, ACCEPT_ORIGINAL_SERVER will
be used.Create a new cookie manager with specified cookie store and cookie policy. |
| Modifier and Type | Method and Description |
|---|---|
| public Map | |
| public CookieStore | Returns: the cookie store currently used by cookie manager.To retrieve current cookie store. |
| private static boolean | |
| private boolean | |
| public void | |
| public void | setCookiePolicy(CookiePolicy
the cookie policy. Can be cookiePolicy)null, which
has no effects on current cookie policy.To set the cookie policy of this cookie manager. |
| private boolean | |
| pack-priv static List |
| cookieJar | back to summary |
|---|---|
| private CookieStore cookieJar | |
| policyCallback | back to summary |
|---|---|
| private CookiePolicy policyCallback | |
| CookieManager | back to summary |
|---|---|
| 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 | back to summary |
|---|---|
| public CookieManager(CookieStore store, CookiePolicy cookiePolicy) Create a new cookie manager with specified cookie store and cookie policy.
| |
| get | back to summary |
|---|---|
| public Map Implements abstract java. Doc from java. Gets all the applicable cookies from a cookie cache for the specified uri in the request header. The It is up to the implementation to take into account the HTTP protocol implementers should make sure that this method is called after all request headers related to choosing cookies are added, and before the request is sent.
| |
| getCookieStore | back to summary |
|---|---|
| public CookieStore getCookieStore() To retrieve current cookie store.
| |
| isInPortList | back to summary |
|---|---|
| private static boolean isInPortList(String lst, int port) | |
| pathMatches | back to summary |
|---|---|
| private boolean pathMatches(String path, String pathToMatchWith) | |
| put | back to summary |
|---|---|
| public void put(URI uri, Map<String, List<String>> responseHeaders) throws IOException Implements abstract java. Doc from java. Sets all the applicable cookies, examples are response header fields that are named Set-Cookie2, present in the response headers into a cookie cache.
| |
| setCookiePolicy | back to summary |
|---|---|
| public void setCookiePolicy(CookiePolicy cookiePolicy) To set the cookie policy of this cookie manager. An instance of
| |
| shouldAcceptInternal | back to summary |
|---|---|
| private boolean shouldAcceptInternal(URI uri, HttpCookie cookie) | |
| sortByPathAndAge | back to summary |
|---|---|
| pack-priv static List | |
| Access | Constructor and Description |
|---|---|
| pack-priv |
| Modifier and Type | Method and Description |
|---|---|
| public int | compare(HttpCookie c1, HttpCookie c2)
Implements java. Compares its two arguments for order. |
| CookieComparator | back to summary |
|---|---|
| pack-priv CookieComparator() | |
| compare | back to summary |
|---|---|
| public int compare(HttpCookie c1, HttpCookie c2) Implements java. Doc from java. Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
The implementor must ensure that
The implementor must also ensure that the relation is transitive:
Finally, the implementor must ensure that | |