用java开发校内网小工具 (一)

作者: ldsea 分类: 程序生活 发布时间: 2008-01-13 17:28

其实想法只是源于公司的网络,公司的网络不是很稳定,只能用代理上网,而且有时会刷不出网页,一般刷新10次才能刷新出一次,每天登录校内网很费劲,所以想编写一个可以自动登录校内网读取信息的东西,开始觉得挺简单的,就是post和get,开始想用C++Builder做,最终还是被一堆的指针打败了,决定用java做,可是java做界面不是一般的费事啊…….只能用Netbeans来做了(表鄙视偶…)

1.第一步当然是先不做界面,直接模拟登录,我只知道用Post的方法,具体的就不熟悉了,哎,想到了我的好朋友,“百度”,每次遇到问题就百度一下^_^,最后查到一个叫“Httpclient”的组件,可以很方便的来模拟Post和Get,无奈公司的网太慢,只能回家再下载了….
2.下载完成,一共需要3个Jar包 commons-codec.jar   commons-httpclient.jar    commons-logging.jar
3. get总比post简单…..所以先尝试写get的方法,网上找了一段代码

[code]HttpClient client = new HttpClient();    

      //设置代理服务器地址和端口    

     // client.getHostConfiguration().setProxy("",808);

      //使用GET方法,如果服务器需要通过HTTPS连接,那只需要将下面URL中的http换成https

      HttpMethod method = new GetMethod("http://www.sohu.com");

      client.executeMethod(method);

      //打印服务器返回的状态

    System.out.println(method.getStatusLine());

      //打印返回的信息
    String response =new String(method.getResponseBodyAsString().getBytes("8859_1"));

      System.out.println(response);

      //释放连接
    method.releaseConnection();[/code]
成功跑起来了,还不错:)
4.下面就开始写post代码了,首先写不需要读取cookie的,这个简单,就不写代码了
5.现在准备写校内网登录的代码,一切都要先登录才可以啊^_^,因为一个Cookie折腾了我好久….主要是对HTTP协议不熟悉,在网上找了很多很多的文章,终于还是自己写出代码调通了^_^
HttpClient httpClient = new HttpClient();
//设置代理服务器地址和端口    

[code]   httpClient.getHostConfiguration().setProxy("22.1.245.133",808);
   httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
   httpClient.getHostConfiguration().setHost("www.xiaonei.com", 80, "http");    PostMethod   post   =   new   PostMethod("http://www.xiaonei.com/Login.do");
    NameValuePair   email       =   new   NameValuePair("email",   "帐号");  
        NameValuePair   password             =   new   NameValuePair("password",   "密码");  
     post.setRequestBody(    
         new   NameValuePair[]   {email,password});              
        httpClient.executeMethod(post);
        post.releaseConnection();
        HttpMethod method = new PostMethod("www.xiaonei.com");
        method.addRequestHeader("Content-Type", "text/html; charset=gb2312");  
        httpClient.executeMethod(method);
        //打印服务器返回的状态
      System.out.println(method.getStatusLine());
        //打印返回的信息
     String response = new String(method.getResponseBodyAsString());
        System.out.println(response);
        //释放连接
     method.releaseConnection();  [/code]

   6.成功登录了,呵呵,先休息会儿^_^(暂时的界面如下)

[img][attach]1[/attach][/img]

7条评论
  • wissne

    2008年8月6日 12:16

    你好,请问可以将这个软件的代码发给我吗?我想自己也学学

  • wissne

    2008年8月6日 12:16

    你好,请问可以将这个软件的代码发给我吗?我想自己也学学wissne@gmail.com

  • qing

    2008年10月21日 16:28

    我用httpclient登陆网页。能成功打印登陆后的网页。但再打开就失效了。请问怎样保存信息(session)??
    请赐教~
    361870877@163.com

  • lovelyrebecca

    2010年1月17日 21:45

    你好, 海蓝, 我最近也想用HttpClient来实现登录校内网(现在已经更改为人人网了, 呵呵), 登录过程伴随着几次重定向, 现在还没有搞定, 有可能是cookie的问题, 你贴出的登录代码还没涉及到这一块儿, 所以,希望达人不吝出手相助啊。

  • lovelyrebecca

    2019年4月24日 00:52

    你好, 海蓝, 我最近也想用HttpClient来实现登录校内网(现在已经更改为人人网了, 呵呵), 登录过程伴随着几次重定向, 现在还没有搞定, 有可能是cookie的问题, 你贴出的登录代码还没涉及到这一块儿, 所以,希望达人不吝出手相助啊。

  • wissne

    2019年4月24日 00:52

    你好,请问可以将这个软件的代码发给我吗?我想自己也学学wissne@gmail.com

  • wissne

    2019年4月24日 00:52

    你好,请问可以将这个软件的代码发给我吗?我想自己也学学

回复 匿名 取消回复

您的电子邮箱地址不会被公开。