httpclient 怎么带上登录成功后返回的cookie值访问下一页面
2014-03-05 11:44
447 查看
我是只很菜很菜的小鸟。刚上班,有这个一个需求。要我抓取别的网站的数据。
我根据用户密码登录一个网站成功后,生成一个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)
我根据用户密码登录一个网站成功后,生成一个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)
相关文章推荐
- js cookie 编码解码登录成功返回原页面
- 安卓课程表(解决利用Httpclient登录获得cookie继续访问但网页仍提示无权限请登录的问题)
- java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- 今天用httpclient访问jenkins遇到请求被转发到登录页面,看了网上的一些教程也没能解决。后来参考了下官方文档解决了,代码如下
- HttpClient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- crawler_java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件_设置代理
- 使用HttpClient登录知乎获取返回页面信息
- spring mvc怎么加入权限控制,在未登录前,任何访问url都跳转到login页面;登录成功后跳转至先前的url
- 禁止页面回退到某个页面(如避免登录成功的用户返回到登录页)
- 纯JAVA HTTPURL 访问制定url地址返回页面数据
- cookie解决 未登录加入购物车 第一次访问弹出新手引导页面
- java HttpClient 获取页面Cookie信息
- 在web.config里面怎么设置FORMS验证:某几个页面可以匿名访问,其他页面都需要登录(转)
- 获取需要登陆才能被访问的页面,HttpClient(扩展HttpWebRequest)来实现
- Java爬虫(三)-- httpClient 模拟登录 + cookie 登录状态管理
- 使用Apache HttpClient访问网络(实现手机端注册,服务器返回信息)
- 登录后返回原访问页面
- Java通过httpclient获取cookie模拟登录