diff --git a/src/main/java/com/googlecode/jsonrpc4j/JsonRpcHttpClient.java b/src/main/java/com/googlecode/jsonrpc4j/JsonRpcHttpClient.java index f804e85..88edaec 100644 --- a/src/main/java/com/googlecode/jsonrpc4j/JsonRpcHttpClient.java +++ b/src/main/java/com/googlecode/jsonrpc4j/JsonRpcHttpClient.java @@ -6,6 +6,7 @@ import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; import java.io.*; import java.lang.reflect.Type; import java.net.HttpURLConnection; @@ -36,6 +37,7 @@ public class JsonRpcHttpClient extends JsonRpcClient implements IJsonRpcClient { private int connectionTimeoutMillis = 60 * 1000; private int readTimeoutMillis = 60 * 1000 * 2; private SSLContext sslContext = null; + private SSLSocketFactory sslSocketFactory = null; private HostnameVerifier hostNameVerifier = null; private String contentType = JSONRPC_CONTENT_TYPE; private boolean gzipRequests = false; @@ -239,8 +241,10 @@ private void setupSsl(HttpURLConnection connection) { if (hostNameVerifier != null) { https.setHostnameVerifier(hostNameVerifier); } - if (sslContext != null) { + if (sslContext != null) { https.setSSLSocketFactory(sslContext.getSocketFactory()); + } else if (sslSocketFactory != null) { + https.setSSLSocketFactory(sslSocketFactory); } } } @@ -333,6 +337,13 @@ public void setSslContext(SSLContext sslContext) { this.sslContext = sslContext; } + /** + * @param sslSocketFactory the sslContext to set + */ + public void setSslSocketFactory(SSLSocketFactory sslSocketFactory) { + this.sslSocketFactory = sslSocketFactory; + } + /** * @param hostNameVerifier the hostNameVerifier to set */