Java 如何使用HttpsUrlConnection对SSL连接使用代理身份验证?
我正在尝试连接到使用SSL的网站。此连接通过代理(squid)进行,该代理也需要代理身份验证 我目前正在应用程序中使用HttpsUrlConnection进行连接,如果可能的话,我更愿意继续使用它 当您使用connection.open(“”)建立连接时会出现问题。在您有机会设置包括“代理身份验证”在内的任何头之前,HTTP连接会立即发送,在正常HTTP连接中,在调用getOutputStream之前不会发送任何内容,因此只需设置此头即可 可以为此设置返回正确名称和密码的defaultAuthenticator。但这有两个问题:Java 如何使用HttpsUrlConnection对SSL连接使用代理身份验证?,java,http,ssl,proxy,Java,Http,Ssl,Proxy,我正在尝试连接到使用SSL的网站。此连接通过代理(squid)进行,该代理也需要代理身份验证 我目前正在应用程序中使用HttpsUrlConnection进行连接,如果可能的话,我更愿意继续使用它 当您使用connection.open(“”)建立连接时会出现问题。在您有机会设置包括“代理身份验证”在内的任何头之前,HTTP连接会立即发送,在正常HTTP连接中,在调用getOutputStream之前不会发送任何内容,因此只需设置此头即可 可以为此设置返回正确名称和密码的defaultAuthe
实现这一目标的正确方法是什么?如果由于HttpUrlConnection的广泛使用,这对HttpUrlConnection来说是不可能的,我会非常惊讶 如果我没有完全弄错的话,那么使用JVM
URLConnection
和friends就无法实现这一点。此外,考虑到它在严重缺陷和内存泄漏方面的记录,它已经在我们公司的黑名单上有相当一段时间了
使用
对于问题1,通常每个
类加载器都有自己的类副本和类静态成员。因为,Authenticator
是一个JVM类,我假设它是由(其中一个)加载的应用程序的父级ClassLoader
ClassLoader
,它确保JVM中只有Authenticator
类的一个副本。您设置了java.net.Authenticator
这就是我们最终使用的方法。