1. 程式人生 > >HttpClient保持登入cookie狀態,繼續操作

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