连接到需要使用 Java 进行身份验证的远程 URL

2022-08-31 08:05:14

如何连接到需要身份验证的 Java 中的远程 URL。我正在尝试找到一种方法来修改以下代码,以便能够以编程方式提供用户名/密码,因此它不会引发401。

URL url = new URL(String.format("http://%s/manager/list", _host + ":8080"));
HttpURLConnection connection = (HttpURLConnection)url.openConnection();

答案 1

有一种本机且侵入性较小的替代方案,仅适用于您的呼叫。

URL url = new URL(“location address”);
URLConnection uc = url.openConnection();
String userpass = username + ":" + password;
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
uc.setRequestProperty ("Authorization", basicAuth);
InputStream in = uc.getInputStream();

答案 2

您可以为 http 请求设置默认身份验证器,如下所示:

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

此外,如果您需要更大的灵活性,可以查看Apache HttpClient,它将为您提供更多身份验证选项(以及会话支持等)。


推荐