4

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

CookieHandler.setDefault(...)

我应该参考哪个源文件?URLConnection&HttpURLConnection似乎与它无关。

帮助,提前谢谢。


编辑: 是否可以仅将 CookieHandler 应用于一个setDefault被调用的实例。

4

2 回答 2

1

javadoc forjava.net.CookieManager很好地概述了 CookieHandler 如何适应。

于 2012-04-11T03:11:10.257 回答
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();
于 2014-05-15T08:27:20.303 回答