首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

施用httpclient实现网页自动登录

2013-07-08 
使用httpclient实现网页自动登录本帖最后由 star251314 于 2013-06-20 22:07:04 编辑先说说问题,因为平时

使用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 response2=httpclient2.execute(httpget);
     str=EntityUtils.toString(response2.getEntity());
      httppost.abort();
      httpget.abort();
     } finally{
   httpclient1.getConnectionManager().shutdown();


   httpclient2.getConnectionManager().shutdown();
  }
  
return str;
 }
}



3,使用的jar包您可以加我QQ412516590传给您,如果您不方便下载的话
4,如果您收不到chinaunicom的无线信号,你可能无法测试到连接成功,会返回提示信息“ip地址非法”,您可以将代码通过qq发给我来测试

第一次发帖求助,希望得到好心人指点,在此谢过,您最好加我的qq412516590交流~ Java web 自动登录 chinaunicom
[解决办法]
你要是真相写个客户端去自动链接人家的服务器,至少也该知道人家的端口和地址,不是网上看到别人给的人人代码没问题你这就没问题的
[解决办法]
我觉得,实现自动网站,并不是所有的情况下都适合。人人网能自动登录,可能是由于它开放了这个功能。其实人人网还开放API接口的,供程序员写应用程序,传送门。还有就是一些微博也提供开发api,比如新浪微博。
我认为大多数网站应该是不支持别人写程序达到自动登录的目的。一般网站的开发人会开发自动登录的功能,比如可以通过cookie实现一周内自动登录。能不能开发程序针对某个网站实现自动登录,要看这个网站本身是否允许。有一个针对form-auth的情况的自动登录,楼主不妨参考:http://www.iteye.com/topic/338230

热点排行