CookieManager
open class CookieManager : CookieHandler
| kotlin.Any | ||
| ↳ | java.net.CookieHandler | |
| ↳ | java.net.CookieManager | |
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:
<code>use CookieHandler <------- HttpURLConnection ^ | impl | use CookieManager -------> CookiePolicy | use |--------> HttpCookie | ^ | | use | use | |--------> CookieStore ^ | impl | Internal in-memory implementation </code>
- CookieHandler is at the core of cookie management. User can call CookieHandler.setDefault to set a concrete CookieHanlder 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.
Summary
| Public constructors | |
|---|---|
| Create a new cookie manager. | |
| CookieManager(store: CookieStore!, cookiePolicy: CookiePolicy!)Create a new cookie manager with specified cookie store and cookie policy. | |
| Public methods | |
|---|---|
| open MutableMap<String!, MutableList<String!>!>! | get(uri: URI!, requestHeaders: MutableMap<String!, MutableList<String!>!>!) | 
| open CookieStore! | To retrieve current cookie store. | 
| open Unit | put(uri: URI!, responseHeaders: MutableMap<String!, MutableList<String!>!>!) | 
| open Unit | setCookiePolicy(cookiePolicy: CookiePolicy!)To set the cookie policy of this cookie manager. | 
| Inherited functions | |
|---|---|
Public constructors
CookieManager
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
CookieManager(
store: CookieStore!,
cookiePolicy: CookiePolicy!)
Create a new cookie manager with specified cookie store and cookie policy.
| Parameters | |
|---|---|
| store | CookieStore!: a CookieStoreto be used by cookie manager. ifnull, cookie manager will use a default one, which is an in-memory CookieStore implementation. | 
| cookiePolicy | CookiePolicy!: a CookiePolicyinstance to be used by cookie manager as policy callback. ifnull, ACCEPT_ORIGINAL_SERVER will be used. | 
Public methods
get
open fun get(
uri: URI!,
requestHeaders: MutableMap<String!, MutableList<String!>!>!
): MutableMap<String!, MutableList<String!>!>!
| Parameters | |
|---|---|
| uri | URI!: a URIrepresenting the intended use for the cookies | 
| requestHeaders | MutableMap<String!, MutableList<String!>!>!: - a Map from request header field names to lists of field values representing the current request headers | 
| Return | |
|---|---|
| MutableMap<String!, MutableList<String!>!>! | an immutable map from state management headers, with field names "Cookie" or "Cookie2" to a list of cookies containing state information | 
| Exceptions | |
|---|---|
| java.io.IOException | if an I/O error occurs | 
| java.lang.IllegalArgumentException | if either argument is null | 
getCookieStore
open fun getCookieStore(): CookieStore!
To retrieve current cookie store.
| Return | |
|---|---|
| CookieStore! | the cookie store currently used by cookie manager. | 
put
open fun put(
uri: URI!,
responseHeaders: MutableMap<String!, MutableList<String!>!>!
): Unit
| Parameters | |
|---|---|
| uri | URI!: a URIwhere the cookies come from | 
| responseHeaders | MutableMap<String!, MutableList<String!>!>!: an immutable map from field names to lists of field values representing the response header fields returned | 
| Exceptions | |
|---|---|
| java.io.IOException | if an I/O error occurs | 
| java.lang.IllegalArgumentException | if either argument is null | 
setCookiePolicy
open fun setCookiePolicy(cookiePolicy: CookiePolicy!): Unit
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 | CookiePolicy!: the cookie policy. Can be null, which has no effects on current cookie policy. | 
