Chinaunix首页 | 论坛 | 博客
  • 博客访问: 301962
  • 博文数量: 42
  • 博客积分: 365
  • 博客等级: 一等列兵
  • 技术积分: 528
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-12 20:59
文章分类

全部博文(42)

文章存档

2016年(1)

2015年(2)

2014年(15)

2013年(10)

2012年(14)

我的朋友

分类: Java

2015-08-03 15:56:07


点击(此处)折叠或打开

  1. package com.expoie.jsouplogin;

  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5.   
  6. import org.jsoup.Connection;
  7. import org.jsoup.Jsoup;
  8. import org.jsoup.Connection.Method;
  9. import org.jsoup.Connection.Response;
  10. import org.jsoup.nodes.Document;
  11. import org.jsoup.nodes.Element;

  12. public class JsoupLoginIteye {
  13.     public static void main(String[] args) throws Exception {
  14.         JsoupLoginIteye jli = new JsoupLoginIteye();
  15.         jli.login("username","password");
  16.     }
  17.     
  18.     public void login(String userName, String pwd) throws Exception {
  19.      //第一次请求
  20.         Connection con=Jsoup.connect(" style="color:#0000CC;">);//获取连接
  21.         con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");//配置模拟浏览器
  22.         Response rs= con.execute();//获取响应
  23.         Document d1=Jsoup.parse(rs.body());//转换为Dom树
  24.         List<Element> et= d1.select("#login_form");//获取form表单,可以通过查看页面源码代码得知
  25.           
  26.        //获取,cooking和表单属性,下面map存放post时的数据
  27.        Map<String, String> datas=new HashMap<>();
  28.        for(Element e:et.get(0).getAllElements()){
  29.            if(e.attr("name").equals("name")){
  30.                e.attr("value", userName);//设置用户名
  31.            }
  32.              
  33.            if(e.attr("name").equals("password")){
  34.                e.attr("value",pwd); //设置用户密码
  35.            }
  36.              
  37.            if(e.attr("name").length()>0){//排除空值表单属性
  38.                  datas.put(e.attr("name"), e.attr("value"));
  39.            }
  40.        }
  41.           
  42.          
  43.        /**
  44.         * 第二次请求,post表单数据,以及cookie信息
  45.         *
  46.         * **/
  47.        Connection con2=Jsoup.connect(" style="color:#0000CC;">);
  48.        con2.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
  49.        //设置cookie和post上面的map数据
  50.        Response login=con2.ignoreContentType(true).method(Method.POST).data(datas).cookies(rs.cookies()).execute();
  51.        //打印,登陆成功后的信息
  52.        System.out.println(login.body());
  53.          
  54.        //登陆成功后的cookie信息,可以保存到本地,以后登陆时,只需一次登陆即可
  55.        Map<String, String> map=login.cookies();
  56.        for(String s:map.keySet()){
  57.            System.out.println(s+" "+map.get(s));
  58.        }
  59.       
  60.     }
  61. }

阅读(2789) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~