【发布时间】:2014-02-21 08:29:32
【问题描述】:
我正在构建一个使用 httpclient 将数据发布和检索到 wordpress 服务器的 android 应用程序。
由于 cookie 中的路径无效,我无法发送帖子数据。这是我检索到的日志:
Cookie rejected: "BasicClientCookie[version=0,name=wordpress_654732f696815924ebd07fb96f161421,domain=[my-domain],path=/wp-content/plugins,expiry=Thu Feb 13 07:53:10 GMT+07:00 2014]".Illegal path attribute "/wp-content/plugins". Path of origin: "/api/auth/generate_auth_cookie/"
Cookie rejected: "BasicClientCookie[version=0,name=wordpress_654732f696815924ebd07fb96f161421,domain=[my-domain],path=/wp-admin,expiry=Thu Feb 13 07:53:10 GMT+07:00 2014]". Illegal path attribute "/wp-admin". Path of origin: "/api/auth/generate_auth_cookie/"
我已经搜索了论坛,并尝试了给出的解决方案,但它仍然拒绝来自应用程序的 cookie。我尝试过的几种解决方案是:
-
设置 cookie 政策
httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); 这个例子 (here)
This解决,还是没有结果
到目前为止,这是我用于发送 http post 数据的 android 代码
CookieStore cookieStore = new BasicCookieStore();
httpclient.setCookieStore(cookieStore);
CookieSpecFactory csf = new CookieSpecFactory() {
@Override
public CookieSpec newInstance(HttpParams httpParams) {
return new BrowserCompatSpec(){
@Override
public void validate (Cookie cookie, CookieOrigin origin)
throws MalformedCookieException{
Log.d("COOKIE", "force validate cookie path info: " + cookie.getPath() +
", origin: " + origin.getPath());
}
};
}
};
httpclient.getCookieSpecs().register("custom_validate", csf);
httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, "custom_validate");
HttpPost httppost = new HttpPost(url);
if(postData != null){
httppost.setEntity(postData);
}
HttpResponse response = httpclient.execute(httppost);
我已经经历了一整天,但没有结果。 有人可以帮忙吗?
【问题讨论】:
-
如何在链接中将数据作为参数发送?
-
我尝试了上面的代码,它对我有用,我在 asyntask 中调用 httpclient 代码并点击 -blog.com/wp-login.php?带有我的用户名和密码的 url 并在 webview 中显示响应,它显示了我记录的页面。如果没有 CookieSpecFactory impl,它会向我显示 Cookie 拒绝警告并继续显示登录页面。
-
顺便问一下,你打的是什么网址,什么是postdata?
标签: java android wordpress cookies