Android: войдите в веб-сайт и сохраните использование сессии/cookie DefaultHttpClient

Я был через различные учебные руководства и этот веб-сайт, но не мог найти надлежащее решение. С другой стороны, я видел, что приложения входят в веб-сайты и запрашивают дополнительные сведения, таким образом, я уверен, что существует способ получить эту работу, но возможно мой подход неправилен.

Вот то, что я пытаюсь сделать: Я хочу войти в веб-сайт, которому нужна аутентификация пользователя, и затем считайте и проанализируйте веб-сайты, которые только доступны, если пользователь зарегистрирован. Проблема: после РЕГИСТРАЦИИ учетных данных к веб-сайту я получаю cookie, который, кажется, не сохраняется в моем HttpClient, даже при том, что документы предполагают, что точно, который должен произойти.

Вот часть моего кода:

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(LOGIN_URL);

List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair(USER_FIELD, login));
nvps.add(new BasicNameValuePair(PASS_FIELD, pw));
nvps.add(new BasicNameValuePair(REMEMBERME, "on"));

httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

HttpResponse response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();

if (entity != null) {
  entity.consumeContent();
}

List<Cookie> cookies = httpclient.getCookieStore().getCookies();

Когда я произвел содержание "cookie", все кажется прекрасным (я получаю сессию):

- [version: 0][name: ASP.NET_SessionId][value: xxx][domain: xxx][path: /][expiry: null]

Как я понял, cookie/сессия будет сохраняться и использоваться в моем HttpClient, пока я не закрываю его.

Читая следующую страницу (который ограничивается), с помощью этого кода:

HttpGet httpget2 = new HttpGet(RESTRICTED_URL);
response = httpclient.execute(httpget2);
entity = response.getEntity();
InputStream data = entity.getContent();
// data will be parsed here
if (entity != null) {
    entity.consumeContent();
}
// connection will be closed afterwards

Если я произвел ответ ПОЛУЧАТЬ-ЗАПРОСА (использование response.getStatusLine()) Я получаю "200 хорошо" сообщений, но парсинг сайта, который возвращается шоу, что вход в систему потерян (я только получаю форму входа в систему).

Любая справка ценится.

10
задан Select0r 8 August 2010 в 13:46
поделиться

1 ответ

Если предположить, что ваш объект httpclient одинаков в обоих случаях, и если предположить, что RESTRICTED_URL находится в том же домене, что и LOGIN_URL, то я думаю, что то, что у вас есть, должно работать.

Возможно, вы захотите использовать Wireshark или прокси-сервер или что-то еще для изучения HTTP-запросов, которые вы делаете, чтобы увидеть, действительно ли cookie прикрепляется к запросу. Может оказаться, что cookie прикрепляется, и в этом случае есть что-то еще, что вызывает отказ второго запроса.

1
ответ дан 4 December 2019 в 04:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: