首页 > 学院 > 开发设计 > 正文

使用HttpClient模拟登录 博客园

2019-11-14 21:08:01
字体:
来源:转载
供稿:网友
使用HttpClient模拟登录 博客园

最近在做Android版的博客园客户端,在考虑添加入登录功能,以实现获取更多的信息。

现在测试使用HttpClient进行模拟登陆。

登录页面:http://passport.VEVb.com/login.aspx

登录结果页面:http://home.VEVb.com/、 http://www.VEVb.com/、……

登录的时候要求提供用户名和密码,属性分别是tbUserName 和 tbPassWord;如图所示:

登录成功,转到下一个页面时,需要提供Cookies,还可以设置UA等属性:

具体代码:

 1 package com.arlen.login; 2  3 import org.apache.commons.httpclient.Cookie; 4 import org.apache.commons.httpclient.HttpClient; 5 import org.apache.commons.httpclient.NameValuePair; 6 import org.apache.commons.httpclient.cookie.CookiePolicy; 7 import org.apache.commons.httpclient.methods.GetMethod; 8 import org.apache.commons.httpclient.methods.PostMethod; 9 import org.apache.commons.httpclient.params.HttpMethodParams;10 11 public class ImitateLogin {12 13     public static void main(String[] args) {14         String userName = "username";15         String password = "password"16         String loginUrl = "http://passport.VEVb.com/login.aspx";17         String dataUrl = "http://home.VEVb.com/";18         HttpClientLogin(userName, password, loginUrl, dataUrl);19     }20 21     PRivate static void HttpClientLogin(String userName, String password,22             String loginUrl, String dataUrl) {23         HttpClient httpClient = new HttpClient();24         httpClient.getParams().setParameter(25                 HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");26         PostMethod postMethod = new PostMethod(loginUrl);27 28         NameValuePair[] postData = { new NameValuePair("tbUserName", userName),29                 new NameValuePair("tbPassword", password) };30         postMethod.setRequestBody(postData);31 32         try {33 34             httpClient.getParams().setCookiePolicy(35                     CookiePolicy.BROWSER_COMPATIBILITY);36             httpClient.executeMethod(postMethod);37             Cookie[] cookies = httpClient.getState().getCookies();38             StringBuffer stringBuffer = new StringBuffer();39             for (Cookie c : cookies) {40                 stringBuffer.append(c.toString() + ";");41             }42 43             GetMethod getMethod = new GetMethod(dataUrl);44             getMethod.setRequestHeader("Cookie", stringBuffer.toString());45             postMethod.setRequestHeader("Host", "passport.VEVb.com");46             postMethod.setRequestHeader("Referer", "http://home.VEVb.com/");47             postMethod.setRequestHeader("User-Agent", "AndroidCnblogs");48             httpClient.executeMethod(getMethod);49 50             String result = getMethod.getResponseBodyAsString();51             System.out.println(result);52 53         } catch (Exception e) {54             e.printStackTrace();55         }56     }57 58 }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表