Подтвердить что ты не робот

Как выполнить проверку подлинности HTTP в android?

Я проверяю класс org.apache.http.auth. Любая ссылка или пример, если у кого есть?

4b9b3361

Ответ 1

Я раньше не встречал этот пакет, но он говорит об этом для HTTP-аутентификации на стороне клиента, которую я смог сделать на Android с помощью API java.net, например:

Authenticator.setDefault(new Authenticator(){
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("myuser","mypass".toCharArray());
    }});
HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection();
c.setUseCaches(false);
c.connect();

Очевидно, что ваш getPasswordAuthentication() должен, вероятно, делать что-то более интеллектуальное, чем возвращать константу.

Если вы пытаетесь сделать запрос с телом (например, POST) аутентификацией, остерегайтесь Android-вопрос 4326. Я связал предлагаемое исправление с платформой там, но есть простой обходной путь, если вы только хотите Basic auth: не беспокойтесь с Authenticator, а вместо этого сделайте следующее:

c.setRequestProperty("Authorization", "basic " +
        Base64.encode("myuser:mypass".getBytes(), Base64.NO_WRAP));

Ответ 2

Для меня это сработало,

final String basicAuth = "Basic " + Base64.encodeToString("user:password".getBytes(), Base64.NO_WRAP);

Apache HttpCLient:

request.setHeader("Authorization", basicAuth);

HttpURLConnection:

connection.setRequestProperty ("Authorization", basicAuth);

Ответ 3

Вы можете вручную вставить HTTP-заголовок для запроса:

HttpGet request = new HttpGet(...);
request.setHeader("Authorization", "Basic "+Base64.encodeBytes("login:password".getBytes()));

Ответ 4

Ручной метод хорошо работает с импортом android.util.Base64, но не забудьте установить Base64.NO_WRAP при вызове encode:

String basicAuth = "Basic " + new String(Base64.encode("user:pass".getBytes(),Base64.NO_WRAP ));
connection.setRequestProperty ("Authorization", basicAuth);

Ответ 5

Для моих проектов Android я использовал библиотеку Base64 здесь:

http://iharder.net/base64

Это очень обширная библиотека, и до сих пор у меня не было никаких проблем с ней.

Ответ 6

Это работает для меня

 URL imageUrl = new URL(url);
                    HttpURLConnection conn = (HttpURLConnection) imageUrl
                            .openConnection();
                    conn.setRequestProperty("Authorization", "basic " +
                            Base64.encode("username:password".getBytes()));
                    conn.setConnectTimeout(30000);
                    conn.setReadTimeout(30000);
                    conn.setInstanceFollowRedirects(true);
                    InputStream is = conn.getInputStream();