HttpComponents 的 HttpClient 对 WordPress 的 Cookie 支持问题

发布于 2021-11-07 04:55:29 字数 1547 浏览 752 评论 2

使用 HttpComponents 的 HttpClient 包来访问 WordPress 的登录页面,有如下的警告信息

2011-12-16 22:15:37 org.apache.http.client.protocol.ResponseProcessCookies processCookies警告: Cookie rejected: "[version: 0][name: wordpress_0f6656bfca67cbc6623cf00ad16ac695][value: ld%7C1324217627%7C291f724c73c12859ae871c3b51bea61a][domain: blog.makingware.com][path: /wp-content/plugins][expiry: null]". Illegal path attribute "/wp-content/plugins". Path of origin: "/"

2011-12-16 22:15:37 org.apache.http.client.protocol.ResponseProcessCookies processCookies

警告: Cookie rejected: "[version: 0][name: wordpress_0f6656bfca67cbc6623cf00ad16ac695][value: ld%7C1324217627%7C291f724c73c12859ae871c3b51bea61a][domain: blog.makingware.com][path: /wp-admin][expiry: null]". Illegal path attribute "/wp-admin". Path of origin: "/"

代码如下:

private final static DefaultHttpClient client = new DefaultHttpClient();
static {
	client.getParams().setParameter(CookieSpecPNames.SINGLE_COOKIE_HEADER, true);
	client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
}

试遍了 CookiePolicy 中的所有常量值都无效,除了那个 IGNORE_COOKIES

好像这是一个bug,我用的是 4.1.2 版本,这是 HttpClient 最新的 GA 版本。

还有什么其他办法能让 HttpComponents 接受 WordPress 的 Cookie 呢?

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

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

发布评论

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

评论(2

冷弦 2021-11-07 16:10:09

找到了解决的办法!!!

private final static DefaultHttpClient client = new DefaultHttpClient();
static {
	CookieStore cookieStore = new BasicCookieStore();
	//Bind custom cookie store to the local context
	client.setCookieStore(cookieStore);
	CookieSpecFactory csf = new CookieSpecFactory() {			
	public CookieSpec newInstance(HttpParams params) {
	    return new BrowserCompatSpec() {
		@Override
		public void validate(Cookie cookie, CookieOrigin origin)
				throws MalformedCookieException 
		{
		    // Oh, I am easy
		    // allow all cookies
		    //log.debug("custom validate");
		}
	    };
	}
	};
	client.getCookieSpecs().register("oschina", csf);
	client.getParams().setParameter(ClientPNames.COOKIE_POLICY, "oschina");
	client.getParams().setParameter(CookieSpecPNames.SINGLE_COOKIE_HEADER, true);
}

耶!

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