我的应用程序需要连接到多个服务器,每个服务器都有自己的用户名/密码对。但是,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;
});
})