随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。
一、概述
该类位于javax.net.ssl包下,类声明:public abstract class HttpsURLConnection extends HttpURLConnection
类层次结构:
java.lang.Object
java.net.URLConnection
java.net.HttpURLConnection
javax.net.ssl.HttpsURLConnection
HttpsURLConnection
扩展 HttpURLConnection
,支持各种特定于 https 功能。
此类使用 HostnameVerifier
和 SSLSocketFactory
。为这两个类都定义了默认实现。但是,可以根据每个类(静态的)或每个实例来替换该实现。所有新 HttpsURLConnection
实例在创建时将被分配“默认的”静态值,通过在连接
前调用每个实例适当的 set 方法可以重写这些值。
二、字段
protected HostnameVerifier hostnameVerifier 此对象的 hostnameVerifier
。
三、构造方法
protected HttpsURLConnection(URL url) 使用指定的 URL 创建 HttpsURLConnection
。
四、方法
1、public abstract String getCipherSuite() 返回在此连接上使用的密码套件。
抛出: IllegalStateException
- 如果在连接建立前调用此方法。
2、public abstract Certificate[] getLocalCertificates() 返回握手期间发送给服务器的证书。
注:仅当使用基于证书的密码套件时此方法才有用。
当在一次握手中有多个证书可供使用时,实现选择它认为是“最好的”可用证书链,并把它传输到另一方。此方法允许调用者知道实际发送的证书链。
返回:证书的有序数组,客户端的证书在前,后跟所有证书颁发机构。如果没有发送任何证书,则返回 null。
抛出: IllegalStateException
- 如果在连接建立前调用此方法。
3、public abstract Certificate[] getServerCertificates() throws SSLPeerUnverifiedException 返回服务器的证书链,它是作为定义会话的一部分而建立的。
注:仅当使用基于证书的密码套件时才可以使用此方法;将它与非基于证书的密码套件(如 Kerberos)一起使用将抛出 SSLPeerUnverifiedException。
返回:服务器证书的有序数组,同位体的证书在前,后跟所有证书颁发机构。
抛出: SSLPeerUnverifiedException
- 如果没有验证同位体。
IllegalStateException
- 如果在连接建立前调用此方法。
4、public Principal getPeerPrincipal() throws SSLPeerUnverifiedException 返回服务器的主体,它是作为定义会话的一部分而建立的。
注:子类应重写此方法。如果没有重写此方法,则对于基于证书的密码套件,它将默认返回服务器终端实体证书的 X500Principal,对于非基于证书的密码套件(如 Kerberos),则抛出 SSLPeerUnverifiedException。
返回:服务器的主体。返回基于 X509 的密码套件的终端实体证书的 X500Principal,以及 Kerberos 的密码套件的 KerberosPrincipal。
抛出: SSLPeerUnverifiedException
- 如果没有验证同位体
IllegalStateException
- 如果在连接建立前调用此方法。
5、public Principal getLocalPrincipal() 返回握手期间发送到服务器的主体。
注:子类应重写此方法。如果没有重写此方法,则对于基于证书的密码套件,它将默认返回发送到服务器的终端实体证书的 X500Principal,对于非基于证书的密码套件(如 Kerberos),则返回 null。
返回:发送到服务器的主体。返回基于 X509 的密码套件的终端实体证书的 X500Principal,以及 Kerberos 的密码套件的 KerberosPrincipal。如果没有发送任何主体,则返回 null。
抛出: IllegalStateException
- 如果在连接建立前调用此方法。
6、public static void setDefaultHostnameVerifier(HostnameVerifier v) 设置此类的新实例所继承的默认 HostnameVerifier
。
如果不调用此方法,则默认的 HostnameVerifier
假定连接不应该被允许。
参数:v
- 默认的主机名校验器
抛出: IllegalArgumentException
- 如果 HostnameVerifier
参数为 null。
SecurityException
- 如果安全管理器存在并且其 checkPermission
方法不允许 SSLPermission("setHostnameVerifier")
7、public static HostnameVerifier getDefaultHostnameVerifier() 获取此类的新实例所继承的默认 HostnameVerifier
。
8、public void setHostnameVerifier(HostnameVerifier v) 设置此实例的 HostnameVerifier
。
此类的新实例继承由 setDefaultHostnameVerifier
设置的默认静态主机名校验器。调用此方法会替换此对象的 HostnameVerifier
。
参数:v
- 主机名校验器
抛出: IllegalArgumentException
- 如果 HostnameVerifier
参数为 null。
9、public HostnameVerifier getHostnameVerifier() 获取此实例适当的 HostnameVerifier(主机名校验器)
。
10、public static void setDefaultSSLSocketFactory(SSLSocketFactory sf) 设置此类的新实例所继承的默认 SSLSocketFactory
。
当为安全 https URL 连接创建套接字时使用套接字工厂。
参数:sf
- 默认的 SSL 套接字工厂
抛出: IllegalArgumentException
- 如果 SSLSocketFactory 参数为 null。
SecurityException
- 如果安全管理器存在并且其 checkSetFactory
方法不允许指定套接字工厂。
11、public static SSLSocketFactory getDefaultSSLSocketFactory() 获取此类的新实例所继承的默认静态 SSLSocketFactory
。
当为安全 https URL 连接创建套接字时使用套接字工厂。
12、public void setSSLSocketFactory(SSLSocketFactory sf) 设置当此实例为安全 https URL 连接创建套接字时使用的 SSLSocketFactory
。
此类的新实例继承由 setDefaultSSLSocketFactory
设置的默认静态 SSLSocketFactory
。调用此方法会替换此对象的 SSLSocketFactory
。
参数:sf
- SSL 套接字工厂
抛出: IllegalArgumentException
- 如果 SSLSocketFactory
参数为 null。
13、public SSLSocketFactory getSSLSocketFactory() 获取为安全 https URL 连接创建套接字时使用的 SSL 套接字工厂。