【问题标题】:Java URLConnection Cookie AnomalyJava URLConnection Cookie 异常
【发布时间】:2011-04-15 18:00:42
【问题描述】:

我正在开发一个应用程序来登录页面,然后访问一些页面数据。 我通过 Firefox 登录并使用 LiveHeaders 查看会话 cookie。

然后我更新了我的代码:

connection.addRequestProperty("Cookie", "XXXXXXXXXXXXXXXXXXXXX");

用 cookie 替换“XXXXXX”。 然后程序可以访问所需的页面。

我正在尝试自动化该过程并使用了 Apache HttpClient。 我可以通过 HttpClient 登录并获取会话 cookie,但由于某种原因,会出现以下问题:

在main方法中,我添加了 String cookieString = doLogin(); 然后改变我的其他方法来使用 connection.addRequestProperty("Cookie", cookieString);

由于某种原因,URLConnection 无法登录。 如果我复制我打印出来的cookieString 字符串,并将我的代码更改为 connection.addRequestProperty("Cookie", "[the printout of the cookie string]"); 然后就可以了。

我不知道问题可能出现在哪里。 我已经在方法中打印出cookieString 变量,然后将其添加到标题中,它与应有的完全相同。

cookie 似乎只在它是静态字符串 ("xxxxxx") 时才有效,如果它是字符串变量则无效。

任何想法都将不胜感激。

提前致谢。

【问题讨论】:

    标签: java session cookies urlconnection jsessionid


    【解决方案1】:

    Here 是我发布的一个示例,可能会对您有所帮助。它处理解析Set-Cookie 响应标头并将其作为Cookie 请求标头发送回以维护会话。

    【讨论】:

    • 谢谢。我可以得到我需要的 cookie,我可以使用 addRequestProperty("Cookie","XXXX");我遇到的问题是: addRequestProperty("Cookie","XXXX");和字符串厨师=“XXXX”; addRequestProperty("Cookie",cook);因为一个有效,另一个无效;
    • 更具体地说,说 String cook = getAuthCookie(); 之间似乎有区别和 System.out.println(getAuthCookie());然后复制输出并将其粘贴为 String cook = "[copied and pasteed from std output";
    • 传递字符串和复制粘贴应该没有什么区别。某处必须有所不同。也许你正在做的事情的顺序或时间?您必须包含更多代码(如getAuthCookie()),也许还有一些示例 cookie 值供我们帮助诊断。
    • 我已经缩小了问题的范围。出于某种原因,我尝试使用 sessionid cookie 的第一个连接总是失败,但后续连接连接正常。我添加了一个标志来判断它是否是第一个连接 - 如果是,那么它会忽略错误并重试。似乎正在工作 - 任何人都可以想到这样做的原因吗?
    • cookie 值是保持不变还是在登录时改变?一种安全措施是在登录或注销后更改 sessionid。不过,这听起来不像你的情况。我还想不出另一个在第二次请求之前它无法工作的原因。
    猜你喜欢
    • 2021-11-27
    • 2016-06-20
    • 1970-01-01
    • 2010-11-30
    • 2015-06-22
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多