最近在做采集程序,用到模拟登录,用正常的httppost等都会显示登录失败,结果静下心研究了一番,发现没有登录就会有一个request cookie,于是把这个第一次先get请求登录页面获取request cookie,然后再将该request cookie放到request header里面的cookie中,再次将参数带上使用post请求访问登录接口,结果登录成功了,成功的cookie也给返回回来了
代码大概如下:不是很完整
//创建一个post请求
HttpPost post = new HttpPost("http://www.baihu.com/login/email");
post.setHeader("Cookie", " cap_id=\"YjA5MjE0YzYyNGQ2NDY5NWJhMmFhN2YyY2EwODIwZjQ=|1437610072|e7cc307c0d2fe2ee84fd3ceb7f83d298156e37e0\"; ");
//注入post数据
post.setEntity(entity);
HttpResponse httpResponse = httpClient.execute(post);
//打印登录是否成功信息
printResponse(httpResponse);
//构造一个get请求,用来测试登录cookie是否拿到
HttpGet g = new HttpGet("http://www.baihu.com/question/following");
//得到post请求返回的cookie信息
String c = setCookie(httpResponse);
//将cookie注入到get请求头当中
g.setHeader("Cookie",c);
CloseableHttpResponse r = httpClient.execute(g);
String content = EntityUtils.toString(r.getEntity());
System.out.println(content);