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 ...
随机推荐
- 网页视频播放方案chimee 组件使用
1.概述 鉴于目前 H5-Video 在 Web 生态环境中存在较大差异化(兼容性)的表现,本文主要介绍使用奇舞团开发chimee 组件进行视频播放的用法. chimee 组件地址: http://c ...
- EXTJS4自学手册——报表概述
Ext画报表所涉及到的组件关系如下: Store:数据容器 Legend:图像说明 Axis:横.纵坐标 Series:报表图像
- The fundamental differences between "GET" and "POST"
The HTML specifications technically define the difference between "GET" and "POST&quo ...
- [1-2] 把时间当做朋友(李笑来)Chapter 2 【开启自己的心智】 摘录
心智是可培养的.可发展的.甚至是可以重建的 早意识到,早些培养可以让自己起步更早些 审视一下我们自己,运用自己的心智,我们会知道每个人可以把自己划分为两部分:自己知道的与自己并不知道的.我们有的时候并 ...
- bye 2013 hello 2014
最近两个月除了必要的工作外,其余时间都在干一些我其实平时很少干的事, 喝酒.唱歌.打麻将.玩牌.以及到处跑找朋友玩,也许是过年的原因我放纵了自己,也许是自己心中的烦恼.我的博客记录着我每次看书学习的笔 ...
- oc自定义不定参数函数
-(void)getValueFormConfig:(NSString *)key,... or -(void)getValueFormConfig:(NSString *)key,...NS_REQ ...
- iframe元素获取
应用场景:main.jsp 中有Iframe,其中包含 home.jsp,在main.jsp中的dom元素绑定的方法操作home.jsp中元素.或反之操作.
- 【C语言天天练(二三)】errno变量
引言: 在C编程中,errno是个必不可少的变量.特别是在网络编程中. 假设你没实用过errno,那仅仅能说明你的程序不够健壮. 为什么会使用errno呢?这是系统库设计中的一个无奈之举.他很多其它的 ...
- jQuery校验 表单验证
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...
- 无线网络RSSI、SSID、BSSID
获取无线网络,及无线网络的参数之前,我们先了解一下RSSI,SSID和BSSID分别是什么,当然你可以去百度或者维基百科查阅,我这里只是简单的说明一下.RSSI就是无线网络的信号强度,这个是和无线AP ...