Java,让 CookieHandler 只在一个实例上工作

标签 java cookies setcookie

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

CookieHandler.setDefault(...)

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

帮助,在此先感谢。


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

最佳答案

我用这个让它工作

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());
}

但没有状态和委托(delegate)

private static final ThreadLocal<CookieManager> delegate =
     new ThreadLocal<CookieManager>();

在使用它的类中实例化

private final CookieManager ownCookieManager = new CookieManager();

喜欢

delegate.set(ownCookieManager);
doRequest();

关于Java,让 CookieHandler 只在一个实例上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4543328/

相关文章:

javascript - 如何检索 cookie 的值?

java - 带有 GWT RemoteServiceServlet 的 GWTP NullPointerException

java - 如何针对 "TAB"和 "ARROW"键自定义 NatTable 的表格单元格导航功能以获得可接受的可用性

java - Spring 集成 jdbc。什么是 'max-rows-per-poll' 的缺失属性 'stored-proc-inbound-channel-adapter' 的替代品?

java - 如何在 Keycloak 中创建脚本映射器?

PHP - 为什么我不能删除这个 session ID cookie?

javascript - Cookie 不会在 POST 请求时随 JavaScript 一起发送

php - 将购物车项目存储在自定义 WordPress 电子商务插件的 cookie 或 DB 上

javascript - 检查 cookie 是否存在于 javascript 中

go - 后续的REST对Go Server的调用未返回Cookie