Class CookieManager
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.
- Since:
- 1.6
- External Specifications
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionCreate 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 TypeMethodDescriptionGets all the applicable cookies from a cookie cache for the specified uri in the request header.To retrieve current cookie store.voidSets all the applicable cookies, examples are response header fields that are named Set-Cookie2, present in the response headers into a cookie cache.voidsetCookiePolicy(CookiePolicy cookiePolicy) To set the cookie policy of this cookie manager.Methods declared in class CookieHandler
getDefault, setDefaultModifier and TypeMethodDescriptionstatic CookieHandlerGets the system-wide cookie handler.static voidsetDefault(CookieHandler cHandler) Sets (or unsets) the system-wide cookie handler.Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitModifier and TypeMethodDescriptionprotected Objectclone()Answers a new instance of the same class as the receiver, whose slots have been filled in with the values in the slots of the receiver.booleanCompares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.protected voidfinalize()Deprecated, for removal: This API element is subject to removal in a future version.May cause performance issues, deadlocks and hangs.getClass()Answers the unique instance of java.lang.Class which represents the class of the receiver.inthashCode()Answers an integer hash code for the receiver.final voidnotify()Causes one thread which iswaiting on the receiver to be made ready to run.final voidCauses all threads which arewaiting on the receiver to be made ready to run.toString()Answers a string containing a concise, human-readable description of the receiver.final voidwait()Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated bynotifyornotifyAll).final voidwait(long time) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.final voidwait(long time, int frac) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.
-
Constructor Details
-
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
Create a new cookie manager with specified cookie store and cookie policy.- Parameters:
store- aCookieStoreto be used by cookie manager. ifnull, cookie manager will use a default one, which is an in-memory CookieStore implementation.cookiePolicy- aCookiePolicyinstance to be used by cookie manager as policy callback. ifnull, ACCEPT_ORIGINAL_SERVER will be used.
-
-
Method Details
-
setCookiePolicy
To set the cookie policy of this cookie manager.An instance of
CookieManagerwill 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 benull, which has no effects on current cookie policy.
-
getCookieStore
To retrieve current cookie store.- Returns:
- the cookie store currently used by cookie manager.
-
get
public Map<String, List<String>> get(URI uri, Map<String, List<String>> requestHeaders) throws IOException Description copied from class:CookieHandlerGets all the applicable cookies from a cookie cache for the specified uri in the request header.The
URIpassed as an argument specifies the intended use for the cookies. In particular the scheme should reflect whether the cookies will be sent over http, https or used in another context like javascript. The host part should reflect either the destination of the cookies or their origin in the case of javascript.It is up to the implementation to take into account the
URIand the cookies attributes and security settings to determine which ones should be returned.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.
- Specified by:
getin classCookieHandler- Parameters:
uri- aURIrepresenting the intended use for the cookiesrequestHeaders- a Map from request header field names to lists of field values representing the current request headers- Returns:
- an immutable map from state management headers, with field names "Cookie" or "Cookie2" to a list of cookies containing state information
- Throws:
IOException- if an I/O error occurs- See Also:
-
put
Description copied from class:CookieHandlerSets all the applicable cookies, examples are response header fields that are named Set-Cookie2, present in the response headers into a cookie cache.- Specified by:
putin classCookieHandler- Parameters:
uri- aURIwhere the cookies come fromresponseHeaders- an immutable map from field names to lists of field values representing the response header fields returned- Throws:
IOException- if an I/O error occurs- See Also:
-