gpt4 book ai didi

java - 被 CookieHandler 迷惑

转载 作者:可可西里 更新时间:2023-11-01 16:23:06 25 4
gpt4 key购买 nike

我需要访问一些网页并像浏览器一样传递 cookie。这很容易使用

CookieHandler.setDefault(new MyCookieManager());

但这引入了我需要避免的全局状态(想象一下同时访问同一台服务器上的两个帐户)。所以我想做的是

String doGetWithCookies(URL url, MyCookies myCookies) {
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
myCookies.addToRequest(...);
myCookies.updateFromResponse(...);
return getHttpBody(conn);
}

但我不知道该怎么做。 CookieManager.getput 方法确实接受 URL,但我想使用

  • 具有不同 URL 的相同 cookie
  • 不同帐户的相同 URL 的不同 cookie

我试过的方法:没有,因为只有四种方法可用,只有一个子类,没有适合的方法。手动解析 header 肯定是可行的,但恕我直言,2014 年没有选择。我知道 Apache Http Client ,但是 1. 我希望微不足道的东西不需要半兆字节的库,2. 乍一看我也看不到解决方案。

澄清:

假设您想以两个不同的用户身份锁定到 SO。您可以通过在一台计算机上使用两台计算机或两种不同的浏览器(Chrome 和 Firefox)来完成。您不能在单个浏览器的两个选项卡中执行此操作。

我要的是相当于模拟两个浏览器的可能性。与此同时,我发现了一个相关问题并发布了 hacky solution

我仍在寻找 CookieHandler 设计背后的解释。

最佳答案

您如何向服务器发送请求?

如果您使用的是 HttpUrlConnection,那么您可以实现自己的 cookie。每次发出请求时,将 Cookie:foo=1;bar=2 header 添加到请求中。每次阅读响应时,检查 Cookie header 并将其存储以供后续请求使用。

一个棘手的部分是根据请求的 URL 知道何时发送 cookie。

除了缺少 CookieHandler 之外,JDK 没有内置任何东西来执行此操作。

HttpClient 可能是一个不错的选择,因为它支持 granular cookies .

关于java - 被 CookieHandler 迷惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23447459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com