Java,让CookieHandler只能处理一个实例

时间:2010-12-28 02:50:32

标签: java cookies setcookie

我不知道CookieHandler如何在系统范围内工作,我确实查看了CookieHandler的来源,但除了get / set方法之外没有找到更多信息。 TCP / HTTP连接在哪里使用CookieHandler的实例,我通过

设置
CookieHandler.setDefault(...)

我应该参考哪个源文件? URLConnection& HttpURLConnection似乎没有任何关系。

帮助,提前谢谢。

<小时/> 修改 是否可以将CookieHandler仅应用于调用setDefault的一个实例。

2 个答案:

答案 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();