最近在做Android版的博客園客戶端,在考慮添加入登錄功能,以實(shí)現(xiàn)獲取更多的信息。
現(xiàn)在測(cè)試使用HttpClient進(jìn)行模擬登陸。
登錄頁面:http://passport.VEVb.com/login.aspx
登錄結(jié)果頁面:http://home.VEVb.com/、 http://m.survivalescaperooms.com/、……
登錄的時(shí)候要求提供用戶名和密碼,屬性分別是tbUserName 和 tbPassWord;如圖所示:

登錄成功,轉(zhuǎn)到下一個(gè)頁面時(shí),需要提供Cookies,還可以設(shè)置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 }新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注