如何强制Java的HttpClient接受无效的cookie?

时间:2009-05-17 16:16:32

标签: java wordpress cookies httpclient

我正在编写一个登录WordPress的脚本,但是,HttpClient的cookie策略将WordPress设置的cookie识别为无效:

May 17, 2009 12:07:43 PM org.apache.commons.httpclient.HttpMethodBase processCookieHeaders
WARNING: Cookie rejected: "$Version=0; wordpress_dce2080bc042b2e639e4f5b3b704aa43=admin%7C1243786064%7C4c56aef46b1210d3d43d8b829fdf4d9a; $Path=/wp-content/plugins". Illegal path attribute "/wp-content/plugins". Path of origin: "/wp-login.php"
May 17, 2009 12:07:43 PM org.apache.commons.httpclient.HttpMethodBase processCookieHeaders
WARNING: Cookie rejected: "$Version=0; wordpress_dce2080bc042b2e639e4f5b3b704aa43=admin%7C1243786064%7C4c56aef46b1210d3d43d8b829fdf4d9a; $Path=/wp-admin". Illegal path attribute "/wp-admin". Path of origin: "/wp-login.php"

如果没有cookie支持,脚本无法登录。 我怎么能绕过这个?

(使用HttpClient 3.1)

6 个答案:

答案 0 :(得分:6)

查看此帖子以获取进一步提示: Java HtmlUnit - can't login to wordpress

在类似的情况下,我能够使用以下代码(虽然我承认它在特定的wordpress案例中不起作用):

HttpClient client = new HttpClient();
client.getParams().setParameter("http.protocol.single-cookie-header", true);
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

答案 1 :(得分:2)

HttpClient是世界上唯一尊重RFC的东西。我提出了打开整个前缀路径的请求。有很多网站设置路径,然后转发给您。这是一件非常有用的事情。由于Chrome,IE,Firefox,Safari,Opera和其他所有浏览器都不关心我认为HTTPClient应该停止关怀,所以我们可以继续生活。

答案 2 :(得分:1)

请查看此页面HttpClient Cookie Guide,看看调整Cookie政策是否可以解决您的问题。

编辑:

更具体地说,尝试Netscape草案策略,看看它的宽松限制是否适用于WordPress cookie。

答案 3 :(得分:0)

您可以注册更轻松的Cookie政策吗?

答案 4 :(得分:0)

您可以实施自己的Cookie政策 请参阅本HTTPClient guide中的第3.6章。

答案 5 :(得分:-1)

在我看来,你可以下载httpclient的源代码,找到log.warn的位置......,可以删除它们。我这样做了。