Я пытаюсь перемещаться по сайту после входа в HttpClient.HttpClient не входит в систему
Я начинаю с определения экземпляра HttpClient вместе с печеньем магазина:
public HttpClient httpclient = new DefaultHttpClient();
public CookieStore cookieStore = new BasicCookieStore();
public HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
В одном (Android) BackgroundTask, я войти в веб-сайт успешно.
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);
После этого, в другом BackgroundTask, я не пытаться подключиться к другой странице, на том же сайте:
HttpGet rosterGet = new HttpGet("http://deeproute.com/deeproute/?sel=rosterlook&myleagueno=6&myteamno=12");
res = httpclient.execute(rosterGet, localContext);
Однако, когда я подключаюсь к этой странице, я больше не вошли в систему Я посмотрел и куки все еще на месте после успешного входа в систему, так что я в недоумении.
Редактировать: для записи этот сайт функционирует нормально, как правило, из обычного браузера.
Edit 2: В ответ на ответ Аарона ниже, кажется, что печенье спасает, потому что если после первого запроса, я делаю это:
List<Cookie> cookies = cookieStore.getCookies();
int cookieSize = cookies.size();
for (int i = 0; i < cookieSize; i++) {
Log.v(TAG, "Cookie " + i + "name: "
+ cookies.get(i).getName());
Log.v(TAG, "Cookie " + i + "value: "
+ cookies.get(i).getValue());
}
я вернусь четыре печенья , включая тот, который хранит мое имя пользователя. Если я сделаю то же самое после второго запроса, я верну 6 файлов cookie, потому что, по-видимому, он дает мне новый идентификатор сеанса. Это, кажется, корень проблемы, но я не уверен, как это исправить.
После первого запроса, это мой идентификатор сессии печенье:
name: ASPSESSIONIDSCSCSBCS
value: GBAJALJBOGKBFLAELPNKEDOE
И после второго запроса, у меня есть два сеанса ID печенье:
name: ASPSESSIONIDSCSCSBCS
value: GBAJALJBOGKBFLAELPNKEDOE
name: ASPSESSIONIDSCSCSBCS
value: MBAJALJBDBOKPEHNCDDFOCBC
Спасибо за ответ, но я думаю, что печенье спасает, потому что если напечатать элементы списка печенья, я вижу значение. Также я нашел контейнер для печенья, но единственное, что я смог найти, это CookieManager, который, похоже, применим только к Android WebViews? – user1945153