Я прошел через различные уроки и этот сайт, но не смог найти правильного решения.С другой стороны, я видел, как приложения заходят на веб-сайты и запрашивают дополнительную информацию, поэтому я уверен, что есть способ заставить это работать, но, возможно, мой подход совершенно неправильный.
Вот что япытаюсь сделать: я хочу войти на веб-сайт, который требует аутентификации пользователя, а затем прочитать и проанализировать веб-сайты, которые доступны, только если пользователь вошел в систему. Проблема: после размещения учетных данных на веб-сайте я получаю 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();
Когда я выводю содержимое «куки»все выглядит нормально (я получаю сеанс):
- [version: 0][name: ASP.NET_SessionId][value: xxx][domain: xxx][path: /][expiry: null]
Как я понял, cookie / сеанс будут сохраняться и использоваться в моем HttpClient, пока я не закроюit.
При чтении следующей страницы (которая ограничена), используя этот код:
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
Если я выводлю ответ GET-запроса (используя response.getStatusLine()
), я получаюСообщение «200 OK», но анализ возвращаемого сайта показывает, что вход в систему потерян (я только получаю форму входа).
Любая помощь приветствуется.