【问题标题】:Java HttpClient problem with CookiesCookie 的 Java HttpClient 问题
【发布时间】:2011-05-10 16:59:56
【问题描述】:

我使用 Apache HttpClient 首先为 Cookie 请求一个页面,然后将这些 Cookie 发布到一个页面。为了能够获得第二页,Cookie 必须与帖子一起发送。我在某处读到 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");
        }
    }
}

}

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

【问题讨论】:

标签: java forms cookies post httpclient


【解决方案1】:

您应该这样说明如何管理 cookie:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多