zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    关于大文件下载
    关于小文件下载
    小文件下载
    AppStore 中的app怎么样生成二维码,来提供下载
    重学STM32---(十)之CAN通信(二)
    重学STM32---(九)之CAN通信(一)
    将博客搬至CSDN
    绑定socket描述符到一个网络设备
    通用 Makefile(及makefile中的notdir,wildcard和patsubst)
    vsftpd 编译安装 及 隐藏版本号
  • 原文地址:https://www.cnblogs.com/fengweixin/p/3582100.html
Copyright © 2011-2022 走看看