为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

月关宝盒 2019-07-11 20:34:37
连接到需要使用Java进行身份验证的远程URL如何连接到需要身份验证的Java远程URL。我试图找到一种方法来修改下面的代码,以便能够编程地提供用户名/密码,这样它就不会抛出401。URL url = new URL(String.format("http://%s/manager/list", _host + ":8080")); HttpURLConnection connection = (HttpURLConnection)url.openConnection();
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

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

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

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


查看完整回答
反对 回复 2019-07-11
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

有一个本地的和较少干扰的替代方案,它只适用于您的调用。

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();


查看完整回答
反对 回复 2019-07-11
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您还可以使用以下内容,这不需要使用外部包:

URL url = new URL(“location address”);URLConnection uc = url.openConnection();String userpass = username + ":" + 
password;String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());
uc.setRequestProperty ("Authorization", basicAuth);InputStream in = uc.getInputStream();


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 661 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信