Java URLConnection 与 Cookie 的问题

发布于 2024-11-05 20:05:59 字数 643 浏览 0 评论 0原文

如果有一个网站在第一页上设置了 Cookie(a),您需要填写一份表格,然后需要将相同的 Cookie(a) 发送到第二页。在第二页上,您填写另一个表格,该表格会将您发送到第三页,如果您发送 Cookie(a),该网站将设置另一个 Cookie(b),然后将您重定向到最后一页。但为了显示最后一页,您需要 Cookie(a 和 b)。
现在,在 java 中,如果您打开到第一页的连接,从响应标头中获取 Cookie(a) 并将其作为 requestProperty 添加到第二页,您将无法再使用 URLConnection.write() ,因为您已经连接了。必须写入新的 POSTDATA 才能填写第 2 页并转到第 3 页。现在您可以创建另一个 URLConnection >>添加 Cookie 作为 requestProperty>>并连接,
但问题是: Cookie(a) 仅对一个会话有效,因此当我打开第二个连接时,Cookie 不再正确。如果您没有将正确的 Cookie 发送到 page3,它只会为 .getHeaderFields.get("Set-Cookie") 返回“null”。
那么有人知道如何获取那秒 Cookie(b) 吗?
-也许可以通过保持/恢复/恢复相同的会话或其他方式..?...

我希望这一点很清楚,否则请我澄清。谢谢!

If there's a site wich Sets a Cookie(a) on the first page, you fill in a form and you need to send that same Cookie(a) to the second page. On this second page you fill another form which sends you to the third page, and if you send Cookie(a), the site will Set another Cookie(b), and then redirects you to the last page. But in order for the last page to show up you need Both the Cookies (a and b).
Now in java if you open a connection to the first page, take the Cookie(a) from the response header and add it as requestProperty to the second page, you can't URLConnection.write() anymore, since you are already connected. This writing of new POSTDATA is necessary to fill in page 2 and go to the third. Now you can create another URLConnection >> add the Cookie as requestProperty >> and connect,
But the problem is: the Cookie(a) is only valid for one session, so when I open the second connection, the Cookie isn't correct anymore. And if you don't send the right Cookie to page3, it'll just return a 'null' for .getHeaderFields.get("Set-Cookie").
So does anyone know how to get that seconds Cookie(b)?
-maybe by keeping/restoring/resuming the same session or something..?...

I hope this is clear, otherwise just ask me for clarification. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

在风中等你 2024-11-12 20:05:59

您可以尝试使用 Apache HttpClient,它内置了 cookie 处理功能。

You could try using Apache HttpClient, which has cookie handling built into it.

两仪 2024-11-12 20:05:59

从 Java 5 开始,有一个 cookiemanager,它将所有相关的 cookie 存储在映射中。您不必使用 url.rewrite 来管理 cookie。谷歌搜索cookiemanager。这是第一个链接是相关的。

From Java 5 onwards, there is a cookiemanager, that stores all relevant cookies in a map. You do not have to use url.rewrite to manage the cookies. Google for cookiemanager. This is the first link and it is relevant.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文