Java HttpClient-登录,然后丢失cookie

Java HttpClient-登录,然后丢失cookie,java,httpclient,Java,Httpclient,在过去的几天里,我一直把头撞在墙上,我就是想不出来,所以我祈祷有人能帮我解决这个问题 基本上,我登录到WordPress帐户,发布登录详细信息,并获取一个显示我已登录的cookie,然后尝试访问用户维护面板,并重定向回登录页面。当我循环浏览我的cookies时,我的登录cookie似乎已经消失了。我甚至使用了新的v4 HttpClient,据说它有更好的cookie管理 如果有人知道发生了什么,我会非常感激 以下是一个功能完整的示例: import org.apache.http.HttpEnt

在过去的几天里,我一直把头撞在墙上,我就是想不出来,所以我祈祷有人能帮我解决这个问题

基本上,我登录到WordPress帐户,发布登录详细信息,并获取一个显示我已登录的cookie,然后尝试访问用户维护面板,并重定向回登录页面。当我循环浏览我的cookies时,我的登录cookie似乎已经消失了。我甚至使用了新的v4 HttpClient,据说它有更好的cookie管理

如果有人知道发生了什么,我会非常感激

以下是一个功能完整的示例:

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import java.util.ArrayList;
import java.util.List;

public class FormLoginDemo
{

    public static void main(String args[])
    {
        try
        {

            DefaultHttpClient httpclient = new DefaultHttpClient();

            HttpGet httpget = new HttpGet("http://www.articlepub.com/wp-login.php");

            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();

            System.out.println("Login form get: " + response.getStatusLine());
            if (entity != null) {
                EntityUtils.consume(entity);
            }
            System.out.println("Initial set of cookies:");
            List<Cookie> cookies = httpclient.getCookieStore().getCookies();
            if (cookies.isEmpty()) {
                System.out.println("None");
            } else {
                for (Cookie cooky : cookies) {
                    System.out.println("- " + cooky.toString());
                }
            }

            HttpPost httpost = new HttpPost("http://www.articlepub.com/wp-login.php");

            List <NameValuePair> nvps = new ArrayList<NameValuePair>();
            nvps.add(new BasicNameValuePair("log", "***********"));
            nvps.add(new BasicNameValuePair("pwd", "***********"));
            nvps.add(new BasicNameValuePair("rememberme", "forever"));
            nvps.add(new BasicNameValuePair("redirect_to", "http://some-wp-site.com/wp-admin/"));
            nvps.add(new BasicNameValuePair("testcookie", "1"));
            nvps.add(new BasicNameValuePair("wp-submit", "Log In"));


            httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

            response = httpclient.execute(httpost);
            entity = response.getEntity();

            System.out.println("Login form get: " + response.getStatusLine());
            if (entity != null) {
                EntityUtils.consume(entity);
            }

            System.out.println("Post logon cookies:");
            cookies = httpclient.getCookieStore().getCookies();
            if (cookies.isEmpty()) {
                System.out.println("None");
            } else {
                for (Cookie cooky : cookies) {
                    System.out.println("- " + cooky.toString());
                }
            }




            HttpGet httpGet = new HttpGet("http://www.articlepub.com/wp-admin/");
            response = httpclient.execute(httpGet);
            entity = response.getEntity();
            System.out.println("Page Contents: " + EntityUtils.toString(entity));


            System.out.println("Login form get: " + response.getStatusLine());
            if (entity != null) {
                EntityUtils.consume(entity);
            }

            System.out.println("Post get cookies:");
            cookies = httpclient.getCookieStore().getCookies();
            if (cookies.isEmpty()) {
                System.out.println("None");
            } else {
                for (Cookie cooky : cookies) {
                    System.out.println("- " + cooky.toString());
                }
            }




            httpclient.getConnectionManager().shutdown();

        } catch (Exception e) {
            System.out.println(e);

        }

    }

}
import org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.cookie.cookie;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入org.apache.http.protocol.http;
导入org.apache.http.util.EntityUtils;
导入java.util.ArrayList;
导入java.util.List;
公共类FormLoginDemo
{
公共静态void main(字符串参数[])
{
尝试
{
DefaultHttpClient httpclient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(“http://www.articlepub.com/wp-login.php");
HttpResponse response=httpclient.execute(httpget);
HttpEntity=response.getEntity();
System.out.println(“登录表单get:+response.getStatusLine());
如果(实体!=null){
EntityUtils.consume(实体);
}
System.out.println(“cookies的初始集:”);
列表cookies=httpclient.getCookieStore().getCookies();
if(cookies.isEmpty()){
系统输出打印项次(“无”);
}否则{
用于(Cookie cooky:cookies){
System.out.println(“-”+cooky.toString());
}
}
HttpPost HttpPost=新的HttpPost(“http://www.articlepub.com/wp-login.php");
List nvps=new ArrayList();
添加(新的BasicNameValuePair(“日志”,“**********”));
添加(新的BasicNameValuePair(“pwd”),“**********”);
添加(新的BasicNameValuePair(“记住”、“永远”);
添加(新的BasicNameValuePair(“重定向到”)http://some-wp-site.com/wp-admin/"));
添加(新的BasicNameValuePair(“testcookie”,“1”);
添加(新的BasicNameValuePair(“wp提交”、“登录”);
setEntity(新的UrlEncodedFormEntity(nvps,HTTP.UTF_8));
response=httpclient.execute(httpost);
entity=response.getEntity();
System.out.println(“登录表单get:+response.getStatusLine());
如果(实体!=null){
EntityUtils.consume(实体);
}
System.out.println(“登录后cookies”);
cookies=httpclient.getCookieStore().getCookies();
if(cookies.isEmpty()){
系统输出打印项次(“无”);
}否则{
用于(Cookie cooky:cookies){
System.out.println(“-”+cooky.toString());
}
}
HttpGet HttpGet=新的HttpGet(“http://www.articlepub.com/wp-admin/");
response=httpclient.execute(httpGet);
entity=response.getEntity();
System.out.println(“页面内容:+EntityUtils.toString(实体));
System.out.println(“登录表单get:+response.getStatusLine());
如果(实体!=null){
EntityUtils.consume(实体);
}
System.out.println(“Post get cookies:”);
cookies=httpclient.getCookieStore().getCookies();
if(cookies.isEmpty()){
系统输出打印项次(“无”);
}否则{
用于(Cookie cooky:cookies){
System.out.println(“-”+cooky.toString());
}
}
httpclient.getConnectionManager().shutdown();
}捕获(例外e){
系统输出打印ln(e);
}
}
}

您需要将httpclient设置为处理cookie,例如:

httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);

你解决了吗?如果没有,请发布代码片段的输出。