使用 Java 进行身份验证的 HTTP 代理

新手上路,请多包涵

如何配置用户名和密码以使用 Java 对 http 代理服务器进行身份验证?

我刚刚找到以下配置参数:

 http.proxyHost=<proxyAddress>
http.proxyPort=<proxyPort>
https.proxyHost=<proxyAddress>
https.proxyPort=<proxyPort>

但是,我的代理服务器需要身份验证。如何配置我的应用程序以使用代理服务器?

原文由 Andre Pastore 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 903
2 个回答

(编辑:正如 OP 所指出的,使用 java.net.Authenticator 也是必需的。为了正确起见,我正在相应地更新我的答案。)

(编辑#2:正如在 另一个答案 中指出的那样,在 JDK 8 中,需要从 jdk.http.auth.tunneling.disabledSchemes 属性中删除 basic 身份验证方案)

对于身份验证,使用 java.net.Authenticator 设置代理的配置并设置系统属性 http.proxyUserhttp.proxyPassword

 final String authUser = "user";
final String authPassword = "password";
Authenticator.setDefault(
  new Authenticator() {
    @Override
    public PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication(authUser, authPassword.toCharArray());
    }
  }
);

System.setProperty("http.proxyUser", authUser);
System.setProperty("http.proxyPassword", authPassword);

System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");

原文由 Pascal Thivent 发布,翻译遵循 CC BY-SA 4.0 许可协议

你快到了,你只需要附加:

 -Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword

原文由 OscarRyz 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题