我不知道CookieHandler如何在系统范围内工作,我确实查看了CookieHandler的来源,但除了get / set方法之外没有找到更多信息。 TCP / HTTP连接在哪里使用CookieHandler的实例,我通过
设置CookieHandler.setDefault(...)
我应该参考哪个源文件? URLConnection
& HttpURLConnection
似乎没有任何关系。
帮助,提前谢谢。
<小时/> 修改 是否可以将CookieHandler仅应用于调用setDefault
的一个实例。
答案 0 :(得分:1)
javadoc for java.net.CookieManager
非常好地概述了CookieHandler的适用范围。
答案 1 :(得分:0)
我使用此
开始工作private static class DelegatingCookieManager extends CookieManager {
@Override public void setCookiePolicy(CookiePolicy cookiePolicy) {
delegate.get().setCookiePolicy(cookiePolicy);
}
@Override public CookieStore getCookieStore() {
return delegate.get().getCookieStore();
}
@Override public Map<String, List<String>> get(
URI uri, Map<String, List<String>> requestHeaders)
throws IOException {
return delegate.get().get(uri, requestHeaders);
}
@Override public void put(URI uri, Map<String,
List<String>> responseHeaders)
throws IOException {
delegate.get().put(uri, responseHeaders);
}
}
全局安装
static {
CookieHandler.setDefault(new DelegatingCookieManager());
}
但没有州和委托
private static final ThreadLocal<CookieManager> delegate =
new ThreadLocal<CookieManager>();
在使用它的类中实例化
private final CookieManager ownCookieManager = new CookieManager();
像
delegate.set(ownCookieManager);
doRequest();