- 首页 > it技术 > >
HttpClient保持登录cookie状态,继续操作
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 = https://www.it610.com/article/{ 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());
;
推荐阅读