Java Android httpclient cookie拒绝了非法路径属性
我正在构建一个android应用程序,它使用httpclient向wordpress服务器发布和检索数据 我无法发送post数据,因为cookie中的路径无效。以下是我检索到的日志:Java Android httpclient cookie拒绝了非法路径属性,java,android,wordpress,cookies,Java,Android,Wordpress,Cookies,我正在构建一个android应用程序,它使用httpclient向wordpress服务器发布和检索数据 我无法发送post数据,因为cookie中的路径无效。以下是我检索到的日志: Cookie rejected: "BasicClientCookie[version=0,name=wordpress_654732f696815924ebd07fb96f161421,domain=[my-domain],path=/wp-content/plugins,expiry=Thu Feb 13 07
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);
- 这个例子()
- 解决方案,仍然没有结果
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);
我已经经历了一整天,但没有结果。
有人能帮忙吗?尝试以下步骤:
public static List<Cookie> cookies;
public DefaultHttpClient getHttpclient() {
DefaultHttpClient httpclient = new DefaultHttpClient();
if (cookies != null) {
int size = cookies.size();
for (int i = 0; i < size; i++) {
httpclient.getCookieStore().addCookie(cookies.get(i));
}
}
// you have also set your extra properties of httpclient like user-agent and time etc. here
return httpclient;
}
public DefaultHttpClient getHttpclient(){
DefaultHttpClient httpclient=新的DefaultHttpClient();
如果(cookies!=null){
int size=cookies.size();
对于(int i=0;i
在link中以参数形式发送数据怎么样?我尝试了上面的代码,它对我有效,我正在asyntask中调用httpclient代码并点击-?带有我的用户名和pwd的url,并在webview中显示响应,它将显示已登录的页面。如果没有CookieSpecFactory impl,它会向我显示Cookie Rjet警告并继续显示登录页面。顺便问一下,你点击的url是什么,postdata是什么?谢谢。httpclient和cookiestore应该是静态的,并在每次请求时重复使用
public DefaultHttpClient getHttpclient() {
DefaultHttpClient httpclient = new DefaultHttpClient();
if (cookies != null) {
int size = cookies.size();
for (int i = 0; i < size; i++) {
httpclient.getCookieStore().addCookie(cookies.get(i));
}
}
// you have also set your extra properties of httpclient like user-agent and time etc. here
return httpclient;
}