httpclient 怎么带上登录成功后返回的cookie值访问下一页面
我是只很菜很菜的小鸟。刚上班,有这个一个需求。要我抓取别的网站的数据。
我根据用户密码登录一个网站成功后,生成一个cookie值。我已经获取到了。然后要带上这个cookie值进行下一页面的访问。问题就出在这里。不知道怎么带上cookie值进行访问。卡在这里了。不是说httpclient能自动管理cookie么?以前从没接触过这个httpclient和httpparser。
如果我不访问该网站的下一页面,我能访问到别的网站。但是一访问该网站的下一页面时。控制台输出的信息html脚本里就显示你没有登录。。
下面是我的源代码。
躬请各位大师帮忙解决。刚注册的账号。没有多少分,也不知道怎么弄。请大家帮帮忙。
package test;
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
/**
* 用来演示登录的示例
* @author Administration
*/
public class HttpClientDemo {
//加载头文件信息。抓包工具获取的。
public void setHeaders(HttpMethod method) {
method.setRequestHeader("Accept","image/gif, image/jpeg, image/pjpeg, image/pjpeg, " +
"application/x-shockwave-flash," +
"application/x-ms-application, application/x-ms-xbap, " +
"application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel," +"application/vnd.ms-powerpoint, application/msword, */*");
method.setRequestHeader("Accept-Language","zh-cn");
method.setRequestHeader("Referer","http://www.casee.cn/mm/Index.ad");
method.setRequestHeader("Accept-Encoding", "gzip, deflate");
method.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;" +"Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
method.setRequestHeader("Host", " www.casee.cn");
method.setRequestHeader("Connection", " Keep-Alive");
method.setRequestHeader("Maxthon", ".NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
method.setRequestHeader("Content-Length","49");
method.setRequestHeader("Referer","http://www.casee.cn/mm/Index.ad");
method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
}
public static void main(String[] args) throws Exception{
HttpClientDemo demo = new HttpClientDemo();
HttpClient client = new HttpClient();
// 模拟登录页面
PostMethod post = new PostMethod("http://www.casee.cn/mm/Index.ad");
demo.setHeaders(post);
NameValuePair name = new NameValuePair( "account" , "aaaa" );
NameValuePair pass = new NameValuePair( "password" , "bbbb" );
post.setRequestBody(new NameValuePair[]{name,pass});
int status = client.executeMethod(post);
System.out.println(status);
System.out.println(post.getResponseBodyAsString());
post.releaseConnection();
// 查看 cookie 信息
Cookie[] cookies = client.getState().getCookies();
if (cookies.length == 0) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.length; i++)
{
System.out.println(cookies[i].toString());
}
client.getState().addCookies(cookies);
}
// 访问所需的页面
//http://www.baidu.com");如果访问别的网站能获取到脚本信息。
GetMethod get=new GetMethod("http://www.casee.cn/mm/MySites.ad?_m=siteStatByData&startDate=2011-06-24&endDate=2011-06-26&issub=true&grouptype=ad&selectAd=All");
get.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 3000);
client.executeMethod(get);
System.out.println(get.getResponseBodyAsString());
get.releaseConnection();
}
}
(来源:http://bbs.csdn.net/topics/370038955)
httpclient 怎么带上登录成功后返回的cookie值访问下一页面的更多相关文章
- httpclient 登录成功后返回的cookie值访问下一页面
HttpClient4.x可以自带维持会话功能,只要使用同一个HttpClient且未关闭连接,则可以使用相同会话来访问其他要求登录验证的服务(见TestLogin()方法中的"执行get请 ...
- 在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“
Response实现登录并记录用户名和密码信息 在某网站的登录页面登录时如果选择"记住用户名",登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页 ...
- 登录成功后如何利用cookie保持登录状态
Cookie是一种服务器发送给浏览器的一组数据,用于浏览器跟踪用户,并访问服务器时保持登录状态等功能. 通常用户登录的时候,服务器根据用户名和密码在服务器数据库中校验该用户是否正确,校验正确后则可以根 ...
- koa2图片上传成功后返回服务器地址,实时显示服务器图片
版本:node(8.5.0); koa(2.4.1); koa-router(7.3.0); koa-body(2.5.0); koa-static(4.0.2); 代码实现 const fs = r ...
- [原]基于CAS实现单点登录(SSO):登录成功后,cas client如何返回更多用户信息
从cas server登录成功后,默认只能从casclient得到用户名.但程序中也可能遇到需要得到更多如姓名,手机号,email等更多用户信息的情况. cas client拿到用户名后再到数据库中查 ...
- 单点登录(十七)----cas4.2.x登录mongodb验证方式成功后返回更多信息更多属性到客户端
我们在之前已经完成了cas4.2.x登录使用mongodb验证方式登录成功了.也解决了登录名中使用中文乱码的问题. 单点登录(十三)-----实战-----cas4.2.X登录启用mongodb验证方 ...
- 使用Shiro登录成功后,跳转到之前访问的页面实现
转:http://blog.csdn.net/lhacker/article/details/20450855 很多时候,我们需要做到,当用户登录成功后,跳转回登录前的页面.如果用户是点击" ...
- IE9中ajax请求成功后返回值却是undefined
ie9中ajax请求一般处理程序成功后返回值始终是undefined,在网上找过很多资料,大致意思都是说前后端编码不一致造成的,但是按照资料上的方案去修改却发现根本不能解决我的问题,试过好多种方案都不 ...
- [saiku] 系统登录成功后查询Cubes
一.系统启动时初始化ds和conn 1.查询出目前系统拥有的Datasources和Connections放入内存中 2.比对saiku-datasources中的ds是否有新增的,如果有,创建新的d ...
随机推荐
- selinux 是什么 (Linux)
SElinux是Linux安全加强工具.关闭用setenforce 0或者修改文件vim /etc/sysconfig/selinux 把SELINUX=enforcing 改为 SELINUX=di ...
- 插件化注解处理API(Pluggable Annotation Processing API)
Java奇技淫巧-插件化注解处理API(Pluggable Annotation Processing API) 参考资料 JDK6的新特性之六:插入式注解处理API(Pluggable Annota ...
- Python 3 初探,第 2 部分: 高级主题
Python 3 是 Guido van Rossum 功能强大的通用编程语言的最新版本.它虽然打破了与 2.x 版本的向后兼容性,但却清理了某些语法方面的问题.本文是这个由两部分组成的系列文章中的第 ...
- Python 3 初探,第 1 部分: Python 3 的新特性
Python 3 是 Guido van Rossum 功能强大的通用编程语言的最新版本.它虽然打破了与 2.x 版本的向后兼容性,但却清理了某些语法方面的问题.本文是系列文章中的第一篇,介绍了影响该 ...
- ant Form 常用 api
经过 Form.create 包装的组件将会自带 this.props.form 属性,this.props.form 提供的 API 如下: 注意:使用 getFieldsValue getFiel ...
- (六)Oracle学习笔记—— 约束
1. 约束介绍 表虽然建立完成了,但是表中的数据是否合法并不能有所检查,而如果要想针对于表中的数据做一些过滤的话,则可以通过约束完成,约束的主要功能是保证表中的数据合法性. 按照约束的分类,一共有五种 ...
- oracle获取时间毫秒数
select (sysdate-to_date('1970-01-01','yyyy-mm-dd')-8/24)*24*60*60*1000-1* 60 * 60 * 1000 millisecon ...
- ibatis-java.lang.RuntimeException: Error setting property 'setFileSize'
ibatis查询问题: ibatis-java.lang.RuntimeException: Error setting property 'setFileSize'
- mongoDB 获取最后插入的文档的ObjectID/_id方法
http://stackoverflow.com/questions/3338999/get-id-of-last-inserted-document-in-a-mongodb-w-java-driv ...
- Java代码Bug分析插件 FindBugs
http://www.oschina.net/p/findbugs FindBugs是一个能静态分析源代码中可能会出现Bug的Eclipse插件工具.