3
我正在嘗試登錄到wesbite。在我的第一個請求中,我使用用戶名和密碼在登錄頁面上執行了POST併成功登錄。使用同一個HttpClient實例,我在網站上的另一個頁面上做了第二次請求,這次是GET請求,但是這一次,返回的頁面沒有登錄。我認爲這是由於第二個請求正在一個新的會議中完成。在HttpClient中保留會話
第一個請求後,它會返回許多餅乾之中,這是會話ID的Cookie:
name: ASPSESSIONIDSCSCSBCS
value: GBAJALJBOGKBFLAELPNKEDOE
而第二個請求後,許多其他餅乾中,我有兩個不同的會話ID的Cookie:
name: ASPSESSIONIDSCSCSBCS
value: GBAJALJBOGKBFLAELPNKEDOE
name: ASPSESSIONIDSCSCSBCS
value: MBAJALJBDBOKPEHNCDDFOCBC
我假設因爲會話ID在第二個請求期間不同,它會忽略第一個會話ID的cookie。
我該如何解決這個問題?
編輯:這是我的代碼
public HttpClient httpclient = new DefaultHttpClient();
public CookieStore cookieStore = new BasicCookieStore();
public HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
//The first request
HttpPost httppost = new HttpPost("http://www.deeproute.com/deeproute/default.asp");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("cookieexists","false"));
nameValuePairs.add(new BasicNameValuePair("name", mUser));
nameValuePairs.add(new BasicNameValuePair("password", mPassword));
nameValuePairs.add(new BasicNameValuePair("subbera", "Login"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
res = httpclient.execute(httppost, localContext);
//The second request
HttpGet rosterGet = new HttpGet("http://deeproute.com/deeproute/?sel=rosterlook&myleagueno=6&myteamno=12");
res = httpclient.execute(rosterGet, localContext);