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 ownCookieStore
andCookiePolicy
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 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 | get(URI
a uri, Map<String, List<String>> URI representing the intended use for the
cookiesa Map from request header
field names to lists of field values representing
the current request headers requestHeaders)Implements abstract java. Gets all the applicable cookies from a cookie cache for the specified uri in the request header. |
public CookieStore | Returns: the cookie store currently used by cookie manager.To retrieve current cookie store. |
private static boolean | |
private boolean | |
public void | put(URI
a uri, Map<String, List<String>> URI where the cookies come froman immutable map from field names to
lists of field values representing the response
header fields returned responseHeaders)Implements abstract 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. |
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
the first object to be compared. c1, HttpCookie the second object to be compared. 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
|