PasswordAuthentication

PasswordAuthentication

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


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

这将设置虚拟机范围内的身份验证处理程序,并且无法标识要连接到的主机。有没有一种方法可以使用httpurlconenction并处理不同主机的不同用户/通行证的http身份验证?

最佳答案

使用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;
    });
})

09-27 05:44