sslcontext的bug
This commit is contained in:
parent
12367d63c6
commit
22bb2ffde8
@ -92,6 +92,8 @@ public class HttpComponent3 extends AbstractHttpClient {
|
|||||||
} else {
|
} else {
|
||||||
httpMethod.setURI(uri);
|
httpMethod.setURI(uri);
|
||||||
}
|
}
|
||||||
|
boolean useSSL = "https".equals(uri.getScheme());
|
||||||
|
SSLContext sslContext = null;
|
||||||
HttpParams params = request.getParams();
|
HttpParams params = request.getParams();
|
||||||
if (params != null) {
|
if (params != null) {
|
||||||
Proxy proxy = params.getProxy();
|
Proxy proxy = params.getProxy();
|
||||||
@ -101,12 +103,9 @@ public class HttpComponent3 extends AbstractHttpClient {
|
|||||||
httpClient.getHostConfiguration().setProxy(
|
httpClient.getHostConfiguration().setProxy(
|
||||||
socketAddress.getHostName(),
|
socketAddress.getHostName(),
|
||||||
socketAddress.getPort());
|
socketAddress.getPort());
|
||||||
|
useSSL = false;
|
||||||
}
|
}
|
||||||
SSLContext sslContext = params.getSSLContext();
|
sslContext = params.getSSLContext();
|
||||||
if (sslContext != null) {
|
|
||||||
Protocol.registerProtocol("https", new Protocol("https",
|
|
||||||
new SSLProtocolSocketFactory(sslContext), 443));
|
|
||||||
}
|
|
||||||
httpClient.getHttpConnectionManager().getParams()
|
httpClient.getHttpConnectionManager().getParams()
|
||||||
.setConnectionTimeout(params.getConnectTimeout());
|
.setConnectionTimeout(params.getConnectTimeout());
|
||||||
httpClient.getHttpConnectionManager().getParams()
|
httpClient.getHttpConnectionManager().getParams()
|
||||||
@ -115,6 +114,13 @@ public class HttpComponent3 extends AbstractHttpClient {
|
|||||||
httpMethod.getParams().setSoTimeout(params.getSocketTimeout());
|
httpMethod.getParams().setSoTimeout(params.getSocketTimeout());
|
||||||
httpMethod.getParams().setContentCharset(Consts.UTF_8.name());
|
httpMethod.getParams().setContentCharset(Consts.UTF_8.name());
|
||||||
}
|
}
|
||||||
|
if (useSSL) {
|
||||||
|
if (sslContext == null) {
|
||||||
|
sslContext = HttpClientFactory.allowSSLContext();
|
||||||
|
}
|
||||||
|
Protocol.registerProtocol("https", new Protocol("https",
|
||||||
|
new SSLProtocolSocketFactory(sslContext), 443));
|
||||||
|
}
|
||||||
com.foxinmy.weixin4j.http.HttpHeaders headers = request
|
com.foxinmy.weixin4j.http.HttpHeaders headers = request
|
||||||
.getHeaders();
|
.getHeaders();
|
||||||
if (headers == null) {
|
if (headers == null) {
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package com.foxinmy.weixin4j.http.factory;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
|
||||||
import org.apache.http.HttpHost;
|
import org.apache.http.HttpHost;
|
||||||
import org.apache.http.client.methods.HttpRequestBase;
|
import org.apache.http.client.methods.HttpRequestBase;
|
||||||
import org.apache.http.conn.params.ConnRoutePNames;
|
import org.apache.http.conn.params.ConnRoutePNames;
|
||||||
@ -43,6 +45,9 @@ public class HttpComponent4_1 extends HttpComponent4 {
|
|||||||
try {
|
try {
|
||||||
HttpRequestBase uriRequest = methodMap.get(request.getMethod());
|
HttpRequestBase uriRequest = methodMap.get(request.getMethod());
|
||||||
uriRequest.setURI(request.getURI());
|
uriRequest.setURI(request.getURI());
|
||||||
|
boolean useSSL = "https".equals(request.getURI().getScheme());
|
||||||
|
SSLContext sslContext = null;
|
||||||
|
X509HostnameVerifier hostnameVerifier = null;
|
||||||
HttpParams params = request.getParams();
|
HttpParams params = request.getParams();
|
||||||
if (params != null) {
|
if (params != null) {
|
||||||
if (params.getProxy() != null) {
|
if (params.getProxy() != null) {
|
||||||
@ -52,6 +57,7 @@ public class HttpComponent4_1 extends HttpComponent4 {
|
|||||||
socketAddress.getPort());
|
socketAddress.getPort());
|
||||||
uriRequest.getParams().setParameter(
|
uriRequest.getParams().setParameter(
|
||||||
ConnRoutePNames.DEFAULT_PROXY, proxy);
|
ConnRoutePNames.DEFAULT_PROXY, proxy);
|
||||||
|
useSSL = false;
|
||||||
}
|
}
|
||||||
uriRequest.getParams().setIntParameter(
|
uriRequest.getParams().setIntParameter(
|
||||||
CoreConnectionPNames.SOCKET_BUFFER_SIZE,
|
CoreConnectionPNames.SOCKET_BUFFER_SIZE,
|
||||||
@ -68,19 +74,23 @@ public class HttpComponent4_1 extends HttpComponent4 {
|
|||||||
HttpHeaders.CONTENT_ENCODING, Consts.UTF_8);
|
HttpHeaders.CONTENT_ENCODING, Consts.UTF_8);
|
||||||
uriRequest.getParams().setParameter(HttpHeaders.ACCEPT_CHARSET,
|
uriRequest.getParams().setParameter(HttpHeaders.ACCEPT_CHARSET,
|
||||||
Consts.UTF_8);
|
Consts.UTF_8);
|
||||||
if (params.getSSLContext() != null) {
|
sslContext = params.getSSLContext();
|
||||||
SSLSocketFactory socketFactory = new SSLSocketFactory(
|
hostnameVerifier = new CustomHostnameVerifier(
|
||||||
params.getSSLContext());
|
params.getHostnameVerifier());
|
||||||
X509HostnameVerifier hostnameVerifier = SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
|
}
|
||||||
if (params.getHostnameVerifier() != null) {
|
if (useSSL) {
|
||||||
hostnameVerifier = new CustomHostnameVerifier(
|
if (sslContext == null) {
|
||||||
params.getHostnameVerifier());
|
sslContext = HttpClientFactory.allowSSLContext();
|
||||||
}
|
|
||||||
socketFactory.setHostnameVerifier(hostnameVerifier);
|
|
||||||
Scheme scheme = new Scheme("https", socketFactory, 443);
|
|
||||||
httpClient.getConnectionManager().getSchemeRegistry()
|
|
||||||
.register(scheme);
|
|
||||||
}
|
}
|
||||||
|
if (hostnameVerifier == null) {
|
||||||
|
hostnameVerifier = SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
|
||||||
|
}
|
||||||
|
SSLSocketFactory socketFactory = new SSLSocketFactory(
|
||||||
|
sslContext);
|
||||||
|
socketFactory.setHostnameVerifier(hostnameVerifier);
|
||||||
|
Scheme scheme = new Scheme("https", socketFactory, 443);
|
||||||
|
httpClient.getConnectionManager().getSchemeRegistry()
|
||||||
|
.register(scheme);
|
||||||
}
|
}
|
||||||
addHeaders(request.getHeaders(), uriRequest);
|
addHeaders(request.getHeaders(), uriRequest);
|
||||||
addEntity(request.getEntity(), uriRequest);
|
addEntity(request.getEntity(), uriRequest);
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package com.foxinmy.weixin4j.http.factory;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
|
||||||
import org.apache.http.HttpHost;
|
import org.apache.http.HttpHost;
|
||||||
import org.apache.http.client.config.RequestConfig;
|
import org.apache.http.client.config.RequestConfig;
|
||||||
import org.apache.http.client.config.RequestConfig.Builder;
|
import org.apache.http.client.config.RequestConfig.Builder;
|
||||||
@ -41,6 +43,9 @@ public class HttpComponent4_2 extends HttpComponent4 {
|
|||||||
try {
|
try {
|
||||||
HttpRequestBase uriRequest = methodMap.get(request.getMethod());
|
HttpRequestBase uriRequest = methodMap.get(request.getMethod());
|
||||||
uriRequest.setURI(request.getURI());
|
uriRequest.setURI(request.getURI());
|
||||||
|
boolean useSSL = "https".equals(request.getURI().getScheme());
|
||||||
|
SSLContext sslContext = null;
|
||||||
|
X509HostnameVerifier hostnameVerifier = null;
|
||||||
HttpParams params = request.getParams();
|
HttpParams params = request.getParams();
|
||||||
if (params != null) {
|
if (params != null) {
|
||||||
Builder requestConfig = RequestConfig.custom()
|
Builder requestConfig = RequestConfig.custom()
|
||||||
@ -53,18 +58,23 @@ public class HttpComponent4_2 extends HttpComponent4 {
|
|||||||
HttpHost proxy = new HttpHost(socketAddress.getHostName(),
|
HttpHost proxy = new HttpHost(socketAddress.getHostName(),
|
||||||
socketAddress.getPort());
|
socketAddress.getPort());
|
||||||
requestConfig.setProxy(proxy);
|
requestConfig.setProxy(proxy);
|
||||||
}
|
useSSL = false;
|
||||||
if (params.getSSLContext() != null) {
|
|
||||||
X509HostnameVerifier hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
|
|
||||||
if (params.getHostnameVerifier() != null) {
|
|
||||||
hostnameVerifier = new CustomHostnameVerifier(
|
|
||||||
params.getHostnameVerifier());
|
|
||||||
}
|
|
||||||
httpClient = HttpClients.custom()
|
|
||||||
.setHostnameVerifier(hostnameVerifier)
|
|
||||||
.setSslcontext(params.getSSLContext()).build();
|
|
||||||
}
|
}
|
||||||
uriRequest.setConfig(requestConfig.build());
|
uriRequest.setConfig(requestConfig.build());
|
||||||
|
sslContext = params.getSSLContext();
|
||||||
|
hostnameVerifier = new CustomHostnameVerifier(
|
||||||
|
params.getHostnameVerifier());
|
||||||
|
}
|
||||||
|
if (useSSL) {
|
||||||
|
if (sslContext == null) {
|
||||||
|
sslContext = HttpClientFactory.allowSSLContext();
|
||||||
|
}
|
||||||
|
if (hostnameVerifier == null) {
|
||||||
|
hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
|
||||||
|
}
|
||||||
|
httpClient = HttpClients.custom()
|
||||||
|
.setHostnameVerifier(hostnameVerifier)
|
||||||
|
.setSslcontext(sslContext).build();
|
||||||
}
|
}
|
||||||
addHeaders(request.getHeaders(), uriRequest);
|
addHeaders(request.getHeaders(), uriRequest);
|
||||||
addEntity(request.getEntity(), uriRequest);
|
addEntity(request.getEntity(), uriRequest);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user