使用httpclient请求http和https在逻辑上是一样的,唯一的不同是,前者使用httpclient,而后者使用httpsclient。以下是创建httpsclient的核心代码片段,与诸君共勉。
private static HttpClient createHttpsClient() throws Exception {
SSLContext sc = SSLContext.getInstance("SSL");
X509TrustManager tm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
sc.init(null, new TrustManager[] {tm}, null);
SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory(sc, NoopHostnameVerifier.INSTANCE);
return HttpClientBuilder.create()
.setSSLSocketFactory(scsf)
.build();
}