diff --git a/plugin.xml b/plugin.xml index 3e46b32..df8b0f1 100644 --- a/plugin.xml +++ b/plugin.xml @@ -67,5 +67,7 @@ + + \ No newline at end of file diff --git a/src/android/com/github/kevinsawicki/http/TLSSocketFactory.java b/src/android/com/github/kevinsawicki/http/TLSSocketFactory.java index e39df61..37cedb0 100644 --- a/src/android/com/github/kevinsawicki/http/TLSSocketFactory.java +++ b/src/android/com/github/kevinsawicki/http/TLSSocketFactory.java @@ -11,45 +11,45 @@ import javax.net.ssl.SSLSocketFactory; public class TLSSocketFactory extends SSLSocketFactory { - private SSLSocketFactory internalSSLSocketFactory; + private SSLSocketFactory delegate; public TLSSocketFactory(SSLContext context) { - internalSSLSocketFactory = context.getSocketFactory(); + delegate = context.getSocketFactory(); } @Override public String[] getDefaultCipherSuites() { - return internalSSLSocketFactory.getDefaultCipherSuites(); + return delegate.getDefaultCipherSuites(); } @Override public String[] getSupportedCipherSuites() { - return internalSSLSocketFactory.getSupportedCipherSuites(); + return delegate.getSupportedCipherSuites(); } @Override public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket(s, host, port, autoClose)); + return enableTLSOnSocket(delegate.createSocket(s, host, port, autoClose)); } @Override public Socket createSocket(String host, int port) throws IOException, UnknownHostException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port)); + return enableTLSOnSocket(delegate.createSocket(host, port)); } @Override public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException, UnknownHostException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port, localHost, localPort)); + return enableTLSOnSocket(delegate.createSocket(host, port, localHost, localPort)); } @Override public Socket createSocket(InetAddress host, int port) throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port)); + return enableTLSOnSocket(delegate.createSocket(host, port)); } @Override public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket(address, port, localAddress, localPort)); + return enableTLSOnSocket(delegate.createSocket(address, port, localAddress, localPort)); } private Socket enableTLSOnSocket(Socket socket) { diff --git a/src/android/com/synconset/cordovahttp/CordovaHttp.java b/src/android/com/synconset/cordovahttp/CordovaHttp.java index 3d24021..4b359c6 100644 --- a/src/android/com/synconset/cordovahttp/CordovaHttp.java +++ b/src/android/com/synconset/cordovahttp/CordovaHttp.java @@ -34,6 +34,16 @@ import android.text.TextUtils; import com.github.kevinsawicki.http.HttpRequest; import com.github.kevinsawicki.http.HttpRequest.HttpRequestException; +import com.github.kevinsawicki.http.HttpRequest.ConnectionFactory; + +import okhttp3.OkUrlFactory; +import okhttp3.OkHttpClient; + +import java.net.URL; +import java.net.HttpURLConnection; +import java.net.URLStreamHandler; +import java.net.Proxy; + abstract class CordovaHttp { protected static final String TAG = "CordovaHTTP"; @@ -231,9 +241,29 @@ abstract class CordovaHttp { return map; } + private ConnectionFactory getConnectionFactory() { + final OkHttpClient okHttpClient = new OkHttpClient(); + + return new ConnectionFactory() { + public HttpURLConnection create(URL url) { + OkHttpClient okHttpClient = new OkHttpClient(); + OkUrlFactory okUrlFactory = new OkUrlFactory(okHttpClient); + return (HttpURLConnection) okUrlFactory.open(url); + } + + public HttpURLConnection create(URL url, Proxy proxy) { + OkHttpClient okHttpClient = new OkHttpClient.Builder().proxy(proxy).build(); + OkUrlFactory okUrlFactory = new OkUrlFactory(okHttpClient); + return (HttpURLConnection) okUrlFactory.open(url); + } + }; + } + protected void prepareRequest(HttpRequest request) throws HttpRequestException, JSONException { this.setupRedirect(request); this.setupSecurity(request); + + request.setConnectionFactory(getConnectionFactory()); request.readTimeout(this.getRequestTimeout()); request.acceptCharset(ACCEPTED_CHARSETS); request.headers(this.getHeadersMap());