mirror of
https://github.com/silkimen/cordova-plugin-advanced-http.git
synced 2026-04-24 00:00:03 +08:00
refactored to use Singleton instance of ConnectionFactory
This commit is contained in:
+1
-1
@@ -56,6 +56,7 @@
|
|||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
</config-file>
|
</config-file>
|
||||||
<source-file src="src/android/com/github/kevinsawicki/http/HttpRequest.java" target-dir="src/com/github/kevinsawicki/http"/>
|
<source-file src="src/android/com/github/kevinsawicki/http/HttpRequest.java" target-dir="src/com/github/kevinsawicki/http"/>
|
||||||
|
<source-file src="src/android/com/github/kevinsawicki/http/OkConnectionFactory.java" target-dir="src/com/github/kevinsawicki/http"/>
|
||||||
<source-file src="src/android/com/github/kevinsawicki/http/TLSSocketFactory.java" target-dir="src/com/github/kevinsawicki/http"/>
|
<source-file src="src/android/com/github/kevinsawicki/http/TLSSocketFactory.java" target-dir="src/com/github/kevinsawicki/http"/>
|
||||||
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttp.java" target-dir="src/com/synconset/cordovahttp"/>
|
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttp.java" target-dir="src/com/synconset/cordovahttp"/>
|
||||||
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttpDelete.java" target-dir="src/com/synconset/cordovahttp"/>
|
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttpDelete.java" target-dir="src/com/synconset/cordovahttp"/>
|
||||||
@@ -67,7 +68,6 @@
|
|||||||
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttpPut.java" target-dir="src/com/synconset/cordovahttp"/>
|
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttpPut.java" target-dir="src/com/synconset/cordovahttp"/>
|
||||||
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttpPatch.java" target-dir="src/com/synconset/cordovahttp"/>
|
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttpPatch.java" target-dir="src/com/synconset/cordovahttp"/>
|
||||||
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttpUpload.java" target-dir="src/com/synconset/cordovahttp"/>
|
<source-file src="src/android/com/synconset/cordovahttp/CordovaHttpUpload.java" target-dir="src/com/synconset/cordovahttp"/>
|
||||||
|
|
||||||
<framework src="com.squareup.okhttp3:okhttp-urlconnection:3.9.1" />
|
<framework src="com.squareup.okhttp3:okhttp-urlconnection:3.9.1" />
|
||||||
</platform>
|
</platform>
|
||||||
</plugin>
|
</plugin>
|
||||||
@@ -428,15 +428,7 @@ public class HttpRequest {
|
|||||||
* A {@link ConnectionFactory} which uses the built-in
|
* A {@link ConnectionFactory} which uses the built-in
|
||||||
* {@link URL#openConnection()}
|
* {@link URL#openConnection()}
|
||||||
*/
|
*/
|
||||||
ConnectionFactory DEFAULT = new ConnectionFactory() {
|
ConnectionFactory DEFAULT = new OkConnectionFactory();
|
||||||
public HttpURLConnection create(URL url) throws IOException {
|
|
||||||
return (HttpURLConnection) url.openConnection();
|
|
||||||
}
|
|
||||||
|
|
||||||
public HttpURLConnection create(URL url, Proxy proxy) throws IOException {
|
|
||||||
return (HttpURLConnection) url.openConnection(proxy);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ConnectionFactory CONNECTION_FACTORY = ConnectionFactory.DEFAULT;
|
private static ConnectionFactory CONNECTION_FACTORY = ConnectionFactory.DEFAULT;
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -34,16 +34,6 @@ import android.text.TextUtils;
|
|||||||
|
|
||||||
import com.github.kevinsawicki.http.HttpRequest;
|
import com.github.kevinsawicki.http.HttpRequest;
|
||||||
import com.github.kevinsawicki.http.HttpRequest.HttpRequestException;
|
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 {
|
abstract class CordovaHttp {
|
||||||
protected static final String TAG = "CordovaHTTP";
|
protected static final String TAG = "CordovaHTTP";
|
||||||
@@ -62,12 +52,7 @@ abstract class CordovaHttp {
|
|||||||
private CallbackContext callbackContext;
|
private CallbackContext callbackContext;
|
||||||
|
|
||||||
public CordovaHttp(String urlString, Object params, JSONObject headers, int timeout, CallbackContext callbackContext) {
|
public CordovaHttp(String urlString, Object params, JSONObject headers, int timeout, CallbackContext callbackContext) {
|
||||||
this.urlString = urlString;
|
this(urlString, params, "default", headers, timeout, callbackContext);
|
||||||
this.params = params;
|
|
||||||
this.serializerName = "default";
|
|
||||||
this.headers = headers;
|
|
||||||
this.timeoutInMilliseconds = timeout;
|
|
||||||
this.callbackContext = callbackContext;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CordovaHttp(String urlString, Object params, String serializerName, JSONObject headers, int timeout, CallbackContext callbackContext) {
|
public CordovaHttp(String urlString, Object params, String serializerName, JSONObject headers, int timeout, CallbackContext callbackContext) {
|
||||||
@@ -241,29 +226,10 @@ abstract class CordovaHttp {
|
|||||||
return map;
|
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 {
|
protected void prepareRequest(HttpRequest request) throws HttpRequestException, JSONException {
|
||||||
this.setupRedirect(request);
|
this.setupRedirect(request);
|
||||||
this.setupSecurity(request);
|
this.setupSecurity(request);
|
||||||
|
|
||||||
request.setConnectionFactory(getConnectionFactory());
|
|
||||||
request.readTimeout(this.getRequestTimeout());
|
request.readTimeout(this.getRequestTimeout());
|
||||||
request.acceptCharset(ACCEPTED_CHARSETS);
|
request.acceptCharset(ACCEPTED_CHARSETS);
|
||||||
request.headers(this.getHeadersMap());
|
request.headers(this.getHeadersMap());
|
||||||
|
|||||||
Reference in New Issue
Block a user