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()); ;

    推荐阅读