HTTP-аутентификация для HttpURLConnection в Android - PullRequest
2 голосов
/ 23 декабря 2011

Мое приложение должно подключаться к нескольким серверам, каждый из которых имеет свои собственные пары имя пользователя / пароль. Однако в примере, представленном в javadoc для Android, не рассматриваются несколько хостов с разными наборами имени пользователя / пароля:

<code>
 Authenticator.setDefault(new Authenticator() {
     protected PasswordAuthentication getPasswordAuthentication() {
       return new PasswordAuthentication(username, password.toCharArray());<br>
   });
 }

Устанавливает обработчик аутентификации для всей виртуальной машины и не может определить, к какому хосту мы пытаемся подключиться. Есть ли способ, которым я могу использовать HttpUrlConenction и обрабатывать HTTP-аутентификацию с разными пользователями / проходами для разных хостов?

1 Ответ

3 голосов
/ 04 декабря 2012

Использовать метод аутентификации getRequestingHost () .

Authenticator.setDefault(new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        if (this.getRequestingHost() != null)
            if (this.getRequestingHost().contains("a-site.com")
                return new PasswordAuthentication(aUsername, aPassword.toCharArray());
            else if (this.getRequestingHost().contains("b-site.com")
                return new PasswordAuthentication(bUsername, bPassword.toCharArray());
        return null;
    });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...