我正在尝试登录一个网站。在我的第一个请求中,我使用用户名和密码在登录页面上进行 POST 并成功登录。使用相同的 HttpClient 实例,我在网站上的不同页面上做了第二次请求,这次是 GET 请求,但是这次返回的页面没有登录。我认为这是由于第二次请求正在新会话中完成。
在第一个请求之后,在它返回的许多 cookie 中,这是会话 ID cookie:
name: ASPSESSIONIDSCSCSBCS
value: GBAJALJBOGKBFLAELPNKEDOE
在第二个请求之后,在许多其他 cookie 中,我有两个不同的会话 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);