Использование HttpPost в Java для входа в систему? - PullRequest
1 голос
/ 19 июля 2011

Я искал решение своей проблемы, но не смог найти точного.

Я пытаюсь получить доступ к веб-сайту, который сначала требует входа в систему. Я пытаюсь войти, используя HttpPost в Java, но ответ пуст, и следующий HttpGet возвращает ссылку перенаправления на страницу входа. Вместо пустого ответа я должен ожидать получить ссылку на перенаправление на какую-то внутреннюю страницу, как при использовании браузера, верно?

Я новичок в протоколах, соединениях и т. Д., И я буду очень признателен за некоторые идеи о том, что может быть не так.

HttpPost authpost = new HttpPost("/login/");
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("submit", "ok"));
formparams.add(new BasicNameValuePair("username", ske_username));
formparams.add(new BasicNameValuePair("password", ske_password));

try {
    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
    authpost.setEntity(formEntity);
    HttpResponse response = client.execute(targetHost, authpost);
    HttpEntity entity = response.getEntity();

    System.out.println(EntityUtils.toString(entity));

} catch (IOException ex) {
...

Ответы [ 3 ]

1 голос
/ 19 июля 2011

ИМХО, ваш следующий шаг должен лучше понять, как работает аутентификация на этом сайте, на уровне запрос-ответ.Вы можете использовать сетевой сниффер (например, Fiddler или Wireshark ) и выполнить вход вручную (из браузера).Сниффер покажет вам полное содержимое запросов и ответов, а затем вы узнаете, что должен искать ваш код.(Как и RHSeeger , я подозреваю, что ответ лежит в заголовках HTTP, особенно в файлах cookie.)

1 голос
/ 19 июля 2011

Проверяете ли вы ответ, чтобы узнать, возвращает ли он файлы cookie, которые необходимо установить в последующих сообщениях?

0 голосов
/ 19 июля 2011

, если для следующих перенаправлений вашего соединения установлено значение true:

conn.setInstanceFollowRedirects(true);

тогда вы будете автоматически перенаправлены и в качестве ответа вы добавите последнюю страницу. Если нет, значит, что-то не так с реализацией вашего соединения. Может быть, что-то не так. Проверьте, что именно вы получите в ответе (код ответа и заголовок)

...