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

其实想法只是源于公司的网络,公司的网络不是很稳定,只能用代理上网,而且有时会刷不出网页,一般刷新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]

用java开发校内网小工具 (一)》有7个想法

  1. wissne

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

    回复
  2. lovelyrebecca

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

    回复
  3. lovelyrebecca

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

    回复

回复 wissne 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注