diff --git a/plugin.xml b/plugin.xml index a675db0..0ff984d 100644 --- a/plugin.xml +++ b/plugin.xml @@ -66,6 +66,7 @@ + diff --git a/src/android/com/silkimen/cordovahttp/CordovaHttpBase.java b/src/android/com/silkimen/cordovahttp/CordovaHttpBase.java index adebad7..4ecbca5 100644 --- a/src/android/com/silkimen/cordovahttp/CordovaHttpBase.java +++ b/src/android/com/silkimen/cordovahttp/CordovaHttpBase.java @@ -15,6 +15,7 @@ import com.silkimen.http.HttpBodyDecoder; import com.silkimen.http.HttpRequest; import com.silkimen.http.HttpRequest.HttpRequestException; import com.silkimen.http.JsonUtils; +import com.silkimen.http.OkConnectionFactory; import org.apache.cordova.CallbackContext; @@ -125,6 +126,7 @@ abstract class CordovaHttpBase implements Runnable { request.readTimeout(this.timeout); request.acceptCharset("UTF-8"); request.uncompress(true); + request.setConnectionFactory(new OkConnectionFactory()); if (this.customHostnameVerifier != null) { request.setHostnameVerifier(this.customHostnameVerifier); diff --git a/src/android/com/silkimen/cordovahttp/CordovaHttpPlugin.java b/src/android/com/silkimen/cordovahttp/CordovaHttpPlugin.java index 2dccf81..3567693 100644 --- a/src/android/com/silkimen/cordovahttp/CordovaHttpPlugin.java +++ b/src/android/com/silkimen/cordovahttp/CordovaHttpPlugin.java @@ -233,6 +233,8 @@ public class CordovaHttpPlugin extends CordovaPlugin { private SSLSocketFactory createSocketFactory(TrustManager[] trustManagers) throws IOException { try { SSLContext context = SSLContext.getInstance("TLS"); + + /* @TODO implement custom KeyManager */ context.init(null, trustManagers, new SecureRandom()); if (android.os.Build.VERSION.SDK_INT < 20) { diff --git a/src/android/com/silkimen/http/OkConnectionFactory.java b/src/android/com/silkimen/http/OkConnectionFactory.java index 90764b5..c1a3ef1 100644 --- a/src/android/com/silkimen/http/OkConnectionFactory.java +++ b/src/android/com/silkimen/http/OkConnectionFactory.java @@ -1,34 +1,26 @@ package com.silkimen.http; -import okhttp3.OkUrlFactory; import okhttp3.OkHttpClient; +import okhttp3.OkUrlFactory; + +import java.net.URL; +import java.net.HttpURLConnection; +import java.net.URLStreamHandler; +import java.net.Proxy; -/** - * A {@link HttpRequest.ConnectionFactory connection factory} which uses OkHttp. - *

- * Call {@link HttpRequest#setConnectionFactory(HttpRequest.ConnectionFactory)} - * with an instance of this class to enable. - */ public class OkConnectionFactory implements HttpRequest.ConnectionFactory { - private final OkHttpClient client; + private final OkHttpClient client = new OkHttpClient(); - public OkConnectionFactory() { - this(new OkHttpClient()); + public HttpURLConnection create(URL url) { + OkUrlFactory urlFactory = new OkUrlFactory(this.client); + + return (HttpURLConnection) urlFactory.open(url); } - public OkConnectionFactory(OkHttpClient client) { - if (client == null) { - throw new NullPointerException("Client must not be null."); - } - this.client = client; - } + public HttpURLConnection create(URL url, Proxy proxy) { + OkHttpClient clientWithProxy = new OkHttpClient.Builder().proxy(proxy).build(); + OkUrlFactory urlFactory = new OkUrlFactory(clientWithProxy); - public HttpURLConnection create(URL url) throws IOException { - return client.open(url); - } - - public HttpURLConnection create(URL url, Proxy proxy) throws IOException { - throw new UnsupportedOperationException( - "Per-connection proxy is not supported. Use OkHttpClient's setProxy instead."); + return (HttpURLConnection) urlFactory.open(url); } } diff --git a/src/android/com/silkimen/http/OkConnectionFactory_chax.java b/src/android/com/silkimen/http/OkConnectionFactory_chax.java deleted file mode 100644 index 69f1b72..0000000 --- a/src/android/com/silkimen/http/OkConnectionFactory_chax.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.github.kevinsawicki.http; - -import okhttp3.OkUrlFactory; -import okhttp3.OkHttpClient; - -import java.net.URL; -import java.net.HttpURLConnection; -import java.net.URLStreamHandler; -import java.net.Proxy; - -public class OkConnectionFactory implements HttpRequest.ConnectionFactory { - - protected OkHttpClient okHttpClient = new OkHttpClient(); - - public HttpURLConnection create(URL url) { - OkUrlFactory okUrlFactory = new OkUrlFactory(okHttpClient); - return (HttpURLConnection) okUrlFactory.open(url); - } - - public HttpURLConnection create(URL url, Proxy proxy) { - OkHttpClient okHttpClientWithProxy = okHttpClient.newBuilder().proxy(proxy).build(); - OkUrlFactory okUrlFactory = new OkUrlFactory(okHttpClientWithProxy); - return (HttpURLConnection) okUrlFactory.open(url); - } -}