2

我的应用程序需要连接到多个服务器,每个服务器都有自己的用户名/密码对。但是,Android 的 javadoc 中提供的示例不考虑具有不同用户名/密码集的多个主机:


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

这会设置 VM 范围的身份验证处理程序,并且无法识别我们正在尝试连接的主机。有没有办法可以使用 HttpUrlConenction 并使用不同主机的不同用户/通行证处理 HTTP 身份验证?

4

1 回答 1

3

使用 Authenticator 的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;
    });
})
于 2012-12-04T18:11:18.993 回答