HttpClient保持登入cookie狀態,繼續操作
阿新 • • 發佈:2019-01-28
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache .commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
HttpClient httpClient = new HttpClient();
// 模擬登陸,按實際伺服器端要求選用 Post 或 Get 請求方式
PostMethod postMethod = new PostMethod("http://123.com");
// 設定登陸時要求的資訊,一般就使用者名稱和密碼,驗證碼自己處理了
NameValuePair[] data = { new NameValuePair("username" , "20169065"),
new NameValuePair("password", "Q123123q")
};
postMethod.setRequestBody(data);
String tmpcookies = "";
try {
// 設定 HttpClient 接收 Cookie,用與瀏覽器一樣的策略
httpClient.getParams().setCookiePolicy(
CookiePolicy.BROWSER _COMPATIBILITY);
httpClient.executeMethod(postMethod);
// 獲得登陸後的 Cookie
Cookie[] cookies = httpClient.getState().getCookies();
tmpcookies = "";
for (Cookie c : cookies) {
tmpcookies += c.toString() + ";";
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("登入成功:" + loginUrl);
System.out.println("登入成功使用者名稱:" + "20169065");
System.out.println("登入成功密碼:" + "Q123123q");
------------------------------------------------------------
GetMethod getMethod = new GetMethod("http://123.com");
getMethod.setRequestHeader("Cookie", tmpcookies);
// 例如,referer 從哪裡來的,UA 像搜尋引擎都會表名自己是誰,無良搜尋引擎除外
postMethod.setRequestHeader("Referer", "http://123.com");
postMethod.setRequestHeader("User-Agent", "Unmi Spot");
httpClient.executeMethod(getMethod);
System.out.println(getMethod.getResponseBodyAsString());;