如何连接到Java中需要身份验证的远程URL。我试图找到一种方法来修改以下代码,以便能够以编程方式提供用户名/密码,从而不会抛出401。
URL url = new URL(String.format("http://%s/manager/list", _host + ":8080")); HttpURLConnection connection = (HttpURLConnection)url.openConnection();
你可以为http请求设置默认的身份验证器,如下所示:
Authenticator.setDefault (new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication ("username", "password".toCharArray()); } });
另外,如果你需要更多的灵活性,可以签出Apache HttpClient,它将为你提供更多的身份验证选项(以及会话支持等)。
有一个本机且不太麻烦的选择,仅适用于你的通话。
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();