Android httpclient - получение файла с упреждающей аутентификацией

У меня проблемы с получением кода HTML сайта с использованием этого примера кода.

http://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.0.x/httpclient/src/examples/org/apache/http/examples/client/ClientPreemptiveBasicAuthentication.java

Я должен использовать вышеуказанный, так как мне нужна превентивная аутентификация для моего приложения в Android.

Я думал, что решением может быть объект httpget, но я все еще получаю только ошибки:( cf HttpGet httpget = new HttpGet("/index.html");

Кто-нибудь знает, как получить содержимое файла, который указан в объекте httpget выше, используя пример кода ссылки. Это определенно называется, но сейчас я могу только получить код состояния и так далее...

Спасибо 4 помощь

4 ответа

Когда я занялся этим в прошлом году, я отказался от нативной упреждающей HTTP-аутентификации HttpClient и просто сам свернул заголовок.

Альтернатива 1: Пожалуйста, прочтите Базовую аутентификацию Http с Android, которая предлагает решение, основанное на официальных документах HttpClient 4. Я не проверял это сам, поэтому я был бы рад узнать, действительно ли это работает.

Изменить: я только что попробовал, и это работает как шарм.

Альтернатива 2: Вы также можете добавить HTTP-заголовок "Авторизация", как предложено @CommonsWare:

post.addHeader("Authorization", "Basic " + Base64.encode(username+":"+password));

В этом случае вам необходим кодировщик Base64 для кодирования строки, содержащей имя пользователя и пароль. Вы можете найти много реализаций в Интернете.

Для меня приведенный выше пример не работает на Android. Я должен был сделать следующее:

post.addHeader("Authorization", "Basic " + Base64.encodeToString((username+":"+password).getBytes(),Base64.NO_WRAP));

Спасибо, Янекс.

Я должен был сделать то же самое на Android.

post.addHeader("Authorization", "Basic " + Base64.encodeToString((username+":"+password).getBytes(),Base64.NO_WRAP));

ура

Другие вопросы по тегам