I'm working on a script that logs into WordPress, however, HttpClient's cookie policy identifies the cookies set by WordPress to be invalid:
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"
Without cookie support, the script can't login.
How can I get around this?
(Using HttpClient 3.1)
Check this post for further hints:
Java HtmlUnit - can't login to wordpress
In similar situations I was able to use the following code (although I admit it doesn't work in the specific wordpress case):
HttpClient client = new HttpClient();
client.getParams().setParameter("http.protocol.single-cookie-header", true);
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
HttpClient is the only thing in the world that respects the RFC. I put in a request to strike the whole prefix path to begin with. There are lots of sites that set the path to a path they then forward you to. It is a very useful thing to do. Since Chrome, IE, Firefox, Safari, Opera and every other browser doesn't care I think HTTPClient should stop caring so we can move on with our lives.
Take a look at this page, HttpClient Cookie Guide, and see if adjusting the cookie policy fixes your problem.
EDIT:
More specifically, try the Netscape Draft policy and see if its relaxed restrictions work with the WordPress cookies.
Can you register your own Cookie Policy that is more relaxed?
You can implement your own cookie policy.
See chapter 3.6 in this HTTPClient guide.
In my opinion,you can download the source code of the httpclient, find the location of the log.warn ... , can delete them. I did so.