Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android httpclient cookie拒绝了非法路径属性_Java_Android_Wordpress_Cookies - Fatal编程技术网

Java Android httpclient 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

我正在构建一个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: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);
    
  • 这个例子()

  • 解决方案,仍然没有结果

这是我到目前为止发送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);
我已经经历了一整天,但没有结果。 有人能帮忙吗?

尝试以下步骤:

  • 您必须在web服务调用公共类上声明cookies list静态变量

    public static List<Cookie> cookies;
    
  • 现在根据服务器请求的其余部分的登录cookies获取httpclient对象

    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;
    }