加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:23:04 所属栏目:Java 来源:网络整理
导读:我不知道CookieHandler如何在系统范围内工作,我确实查看了CookieHandler的来源,但除了get / set方法之外没有找到更多的信息. TCP / HTTP连接在哪里使用我设置的CookieHandler实例 CookieHandler.setDefault(...) 我应该参考哪个源文件? URLConnection HttpU
我不知道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,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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读