Android 中 HttpURLConnection 的 HTTP 身份验证

发布于 2024-12-22 18:17:57 字数 444 浏览 2 评论 0原文

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


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

这设置了虚拟机范围的身份验证处理程序,并且无法识别我们正在尝试连接到哪个主机。有没有一种方法可以使用 HttpUrlConenction 并使用不同主机的不同用户/通行证处理 HTTP 身份验证?

My app needs to connect to multiple servers, each with their own username/password pairs. However The example provided in Android's javadoc does not consider multiple hosts with different sets of username/password:


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

This sets the VM-wide authentication handler, and has no way to identify which host we are trying to connect to. Is there a way that I can use HttpUrlConenction and handle HTTP Authentication with different user/passes for different hosts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽你眉间 2024-12-29 18:17:57

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

Use Authenticator's getRequestingHost() method.

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;
    });
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文