Как сделать Аутентификацию HTTP в андроиде?

Я проверяю класс org.apache.http.auth. Еще ссылка или пример, если кто-либо имеет?

72
задан Bohemian 28 December 2009 в 07:39
поделиться

2 ответа

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

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 issue 4326. Там я связал предложенное исправление с платформой, но есть простое обходное решение, если вы хотите, чтобы Basic auth: не беспокоились с Authenticator, а делали следующее:

c.setRequestProperty("Authorization", "basic " +
        Base64.encode("myuser:mypass".getBytes(), Base64.NO_WRAP));
78
ответ дан 24 November 2019 в 12:27
поделиться

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

http://iharder.net/base64

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

3
ответ дан 24 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

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