Java HttpClient与Cookie的问题

Java HttpClient与Cookie的问题,java,forms,cookies,post,httpclient,Java,Forms,Cookies,Post,Httpclient,我使用ApacheHttpClient首先为Cookies请求一个页面,然后发布到包含这些Cookies的页面。为了能够获得第二页,Cookie必须与post一起发送。我在某个地方读到,HttpClient自动保存并发送所需的cookie,但不知何故,我一直停留在第一页,可能是因为cookie未正确获取,或未正确发送 public class Main { static BufferedWriter writer; public static void main(String args[]

我使用ApacheHttpClient首先为Cookies请求一个页面,然后发布到包含这些Cookies的页面。为了能够获得第二页,Cookie必须与post一起发送。我在某个地方读到,HttpClient自动保存并发送所需的cookie,但不知何故,我一直停留在第一页,可能是因为cookie未正确获取,或未正确发送

 public class Main {

static BufferedWriter writer;

public static void main(String args[]) throws ClientProtocolException, IOException {

    getRequest();
}

public static void getRequest() throws ClientProtocolException, IOException {

    HttpClient client = new DefaultHttpClient();

    //the request to get the Cookies
    HttpGet request = new HttpGet("http://www.SiteNameCutOut.cz");

    List <NameValuePair> parameters = new ArrayList <NameValuePair>();  
    parameters.add(new BasicNameValuePair("view_state", "eaftOTAPef3NDs79"));  
    parameters.add(new BasicNameValuePair("age", "23"));  
    parameters.add(new BasicNameValuePair("button", "go"));  

    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters);
    HttpPost post = new HttpPost("http://www.SameSiteAsAbove.cz");
    post.setEntity(entity);


    //post.addHeader(request.getFirstHeader("Set-Cookie")); maybe?
    post.addHeader("Host","theSiteHost");
    post.addHeader("User-Agent","Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1");
    post.addHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    post.addHeader("Accept-Language","en-us,en;q=0.5");
    post.addHeader("Accept-Encoding","gzip, deflate");
    post.addHeader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    post.addHeader("Keep-Alive","115");
    post.addHeader("Connection","keep-alive");


    client.execute(request);

    try {
        request.abort();
        HttpResponse response = client.execute(post);
        writer = new BufferedWriter(new FileWriter("test001.html"));
        writer.write(HttpHelper.request(response)); //gets html of the response
    } catch (IOException ex) {
        System.out.println("**Error**");
    } finally {
        if(writer != null){
            writer.close();
        }
        else{
            System.out.println("Writer is null");
        }
    }
}
公共类主{
静态缓冲写入程序;
公共静态void main(字符串args[])抛出ClientProtocolException,IOException{
getRequest();
}
public static void getRequest()引发ClientProtocolException,IOException{
HttpClient=new DefaultHttpClient();
//获取Cookies的请求
HttpGet请求=新建HttpGet(“http://www.SiteNameCutOut.cz");
列表参数=新的ArrayList();
添加(新的BasicNameValuePair(“视图状态”、“eaftOTAPef3NDs79”);
添加(新的BasicNameValuePair(“年龄”,“23”));
添加(新的BasicNameValuePair(“按钮”、“转到”);
UrlEncodedFormEntity实体=新的UrlEncodedFormEntity(参数);
HttpPost=新的HttpPost(“http://www.SameSiteAsAbove.cz");
后设实体(实体);
//post.addHeader(request.getFirstHeader(“设置Cookie”);可能吗?
post.addHeader(“主机”、“站点主机”);
post.addHeader(“用户代理”、“Mozilla/5.0(Windows NT 6.0;rv:2.0.1)Gecko/20100101 Firefox/4.0.1”);
addHeader(“Accept”,“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”);
post.addHeader(“接受语言”,“en-us,en;q=0.5”);
addHeader(“接受编码”、“gzip、deflate”);
post.addHeader(“接受字符集”,“ISO-8859-1,utf-8;q=0.7,*;q=0.7”);
post.addHeader(“保持活动”、“115”);
post.addHeader(“连接”、“保持活动”);
执行(请求);
试一试{
request.abort();
HttpResponse response=client.execute(post);
writer=newbufferedwriter(newfilewriter(“test001.html”);
writer.write(HttpHelper.request(response));//获取响应的html
}捕获(IOEX异常){
System.out.println(“**错误**”);
}最后{
if(writer!=null){
writer.close();
}
否则{
System.out.println(“Writer为空”);
}
}
}
}


所以我希望任何人都能帮助我,谢谢

您应该指出如何像这样管理cookie:


request.getParams().setParameter(ClientPNames.COOKIE_策略、CookiePolicy.BROWSER_兼容性)

此问题/答案可能会为您的问题提供解决方案: