- java.lang.Object
-
- java.net.CookieHandler
-
- java.net.CookieManager
-
public class CookieManager extends CookieHandler
CookieManager提供了一个CookieHandler
的具体实现, 它将 cookie的存储与接受和拒绝Cookie的策略分开。 那么CookieManager初始化为CookieStore
,其管理存储和CookiePolicy
对象,这使得上的cookie接受/拒绝决策。java.net包中的HTTP Cookie管理如下所示:
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 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.
用户可以通过各种方式连接自己的HTTP cookie管理行为,例如
- 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());
实施符合RFC 2965第3.3节。
- 从以下版本开始:
- 1.6
- 另请参见:
-
CookiePolicy
-
-
构造方法摘要
构造方法 Constructor 描述 CookieManager()
创建一个新的cookie管理器。CookieManager(CookieStore store, CookiePolicy cookiePolicy)
使用指定的Cookie存储和Cookie策略创建一个新的cookie管理器。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 Map<String,List<String>>
get(URI uri, Map<String,List<String>> requestHeaders)
从请求标头中指定的uri的cookie缓存获取所有适用的Cookie。CookieStore
getCookieStore()
检索当前cookie存储。void
put(URI uri, Map<String,List<String>> responseHeaders)
设置所有适用的Cookie,示例是响应头字段,名为Set-Cookie2,存在于响应头中的cookie缓存中。void
setCookiePolicy(CookiePolicy cookiePolicy)
设置此Cookie管理器的Cookie策略。-
Methods inherited from class java.net.CookieHandler
getDefault, setDefault
-
-
-
-
构造方法详细信息
-
CookieManager
public CookieManager()
创建一个新的cookie管理器。此构造函数将创建具有默认Cookie存储并接受策略的新Cookie管理器。 效果与
CookieManager(null, null)
相同。
-
CookieManager
public CookieManager(CookieStore store, CookiePolicy cookiePolicy)
使用指定的Cookie存储和Cookie策略创建一个新的cookie管理器。- 参数
-
store
- 一个CookieStore
被cookie管理器使用。 如果是null
,cookie管理器将使用默认值,这是一个内存中的CookieStore实现。 -
cookiePolicy
- 由cookie管理器用作策略回调的CookiePolicy
实例。 如果是null
,将使用ACCEPT_ORIGINAL_SERVER。
-
-
方法详细信息
-
setCookiePolicy
public void setCookiePolicy(CookiePolicy cookiePolicy)
设置此Cookie管理器的Cookie策略。默认情况下,
CookieManager
的实例将具有ACCEPT_ORIGINAL_SERVER的Cookie策略。 用户总是可以调用此方法来设置另一个cookie策略。- 参数
-
cookiePolicy
- cookie政策。 可以是null
,这对当前的cookie策略没有影响。
-
getCookieStore
public CookieStore getCookieStore()
检索当前cookie存储。- 结果
- cookie管理器当前使用的cookie存储。
-
get
public Map<String,List<String>> get(URI uri, Map<String,List<String>> requestHeaders) throws IOException
描述从类别复制:CookieHandler
从请求标头中指定的uri的cookie缓存获取所有适用的Cookie。作为参数传递的
URI
指定了Cookie的预期用途。 特别地,该方案应反映Cookie是否通过http,https发送或在其他上下文中使用,如javascript。 在javascript的情况下,主机部分应反映cookie的目的地或其原点。考虑到
URI
和cookies属性和安全设置来确定哪些应该返回,这取决于实现。HTTP协议实现者应确保在添加与选择cookie相关的所有请求头之后,以及发送请求之前调用此方法。
- Specified by:
-
get
在CookieHandler
- 参数
-
uri
- 表示Cookie的预期用途的URI
-
requestHeaders
- - 从请求头字段名称映射到表示当前请求头的字段值的列表 - 结果
- 来自状态管理标题的不可变地图,字段名称为“Cookie”或“Cookie2”到包含状态信息的Cookie列表
- 异常
-
IOException
- 如果发生I / O错误 - 另请参见:
-
CookieHandler.put(URI, Map)
-
put
public void put(URI uri, Map<String,List<String>> responseHeaders) throws IOException
描述从类别复制:CookieHandler
设置所有适用的Cookie,示例是响应头字段,名为Set-Cookie2,存在于响应头中的cookie缓存中。- Specified by:
-
put
在CookieHandler
- 参数
-
uri
- 一个URI
,其中饼干来自 -
responseHeaders
- 从字段名称到表示返回的响应标头字段的字段值的列表的不可变映射 - 异常
-
IOException
- 如果发生I / O错误 - 另请参见:
-
CookieHandler.get(URI, Map)
-
-