繁体   English   中英

如何使用HttpsUrlConnection对SSL连接使用代理身份验证?

[英]How do I use proxy authentication with an SSL connection using HttpsUrlConnection?

我正在尝试连接到使用SSL的网站。 此连接通过代理(鱿鱼)进行,该代理也需要代理身份验证。

我目前正在使用HttpsUrlConnection在我的应用程序内进行连接,如果可能的话,我希望继续使用它。

当您使用connection.open(“ https://domain.com ”)建立连接时,会出现问题,通常情况下,在您有机会设置包括“代理身份验证”在内的任何标头之前,都会立即发送HTTP CONNECT http连接在getOutputStream调用之前不会发送任何内容,因此只需设置此标头即可。

可以为此设置一个defaultAuthenticator,以返回正确的名称和密码。 但是有两个问题:

  1. 该应用程序是在Web服务器中运行的Web应用程序,其他未知应用程序也是如此。 如果设置默认身份验证器,这会影响其他应用程序吗? (出于同样的原因,设置系统属性已退出)

  2. 我还需要能够在不同的连接中使用不同的代理。 例如,我可能有一个连接到proxy1.domain.com,另一个连接到proxy2.domain.com,每个都有不同的凭据。

实现此目标的正确方法是什么? 如果HttpUrlConnection不能广泛使用,我将感到非常惊讶。

如果我没有完全误解,则无法使用JVM URLConnection和朋友来实现。 此外,鉴于其在严重错误和内存泄漏方面的良好记录,它已经在我们公司的黑名单中占据了相当长的一段时间。

使用Apache HttpClient

对于您的问题1, 通常每个ClassLoader都有一个自己的类副本和这些类的静态成员。 由于Authenticator是JVM类,因此我假设它是由应用程序ClassLoader的父ClassLoader (之一) ClassLoader的,这确保了JVM内只有Authenticator 的单个副本。

您设置一个java.net.Authenticator

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM