日期:2014-05-17  浏览次数:20768 次

使用httpclient实现网页自动登录
本帖最后由 star251314 于 2013-06-20 22:07:04 编辑
先说说问题,因为平时在屋里可以收到chinaunicom的无线网信号,免费使用而且网速还行,但有个问题就是每隔二十分钟就要掉次线(好像是联通故意的),不胜其烦啊,作为工科技术男就想着能不能自己解决这个问题,但无奈lz学通信的,对java、web什么的实在是不太懂,希望各位it高手能指点指点

目前我已经实现了自动检测网络状态,检测到掉线后自动重启无线网卡(因为每次只有禁用再启用无线网卡后才能再登陆账号,不知道什么原因),然后在网上找了个使用httpclient自动登录人人网的代码测试了下也能成功,但是我尝试如法炮制着去登陆联通账号网页的时候就是登不了,所以前来请教~

我能提供的一些参考:
1,联通账号登陆网址:http://wlan7.bj.chinaunicom.cn/index.jsp?basname=&setUserOnline=0&sap=
2,测试成功的人人网自动登录代码:
package test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
//import org.apache.http.client.CookieStore;
import org.apache.http.cookie.Cookie;

public class Test{
 
    public static void main(String[] args) throws ClientProtocolException,IOException{
    String loginurl="http://www.renren.com/PLogin.do";
    String username="*****@qq.com";
    String password="*****";
    System.out.println(Test.posturl(loginurl,username,password));
 }

 
 public static String posturl(String loginurl,String username,String
     password) throws ClientProtocolException, IOException{
  
     HttpClient httpclient1 = new DefaultHttpClient();
     HttpPost httppost = new HttpPost(loginurl);
     List<NameValuePair> formparams = new ArrayList<NameValuePair>();
     formparams.add(new BasicNameValuePair("email",username));
     formparams.add(new BasicNameValuePair("password",password));
     UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,"utf-8");
     httppost.setEntity(entity);
     String str="";
     HttpClient httpclient2=null;
     try {
     HttpResponse response1 = httpclient1.execute(httppost);

     String login_success=response1.getFirstHeader("Location").getValue();//获取登陆成功之后跳转链接
           
     System.out.println(login_success);
     
     HttpGet httpget = new HttpGet(login_success);
     httpclient2 = new DefaultHttpClient();
     HttpResponse&n