|
|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
package com.github.catvod.net; |
|
|
|
|
|
|
|
|
|
import android.net.Uri; |
|
|
|
|
import android.text.TextUtils; |
|
|
|
|
|
|
|
|
|
import androidx.collection.ArrayMap; |
|
|
|
|
|
|
|
|
|
@ -9,6 +10,7 @@ import com.github.catvod.utils.Path; |
|
|
|
|
import com.github.catvod.utils.Util; |
|
|
|
|
import com.google.common.net.HttpHeaders; |
|
|
|
|
|
|
|
|
|
import java.net.ProxySelector; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
@ -28,10 +30,15 @@ public class OkHttp { |
|
|
|
|
|
|
|
|
|
private static final int TIMEOUT = 30 * 1000; |
|
|
|
|
private static final int CACHE = 100 * 1024 * 1024; |
|
|
|
|
private static final ProxySelector defaultSelector; |
|
|
|
|
|
|
|
|
|
private DnsOverHttps dns; |
|
|
|
|
private OkHttpClient client; |
|
|
|
|
private ProxySelector selector; |
|
|
|
|
private OkProxySelector selector; |
|
|
|
|
|
|
|
|
|
static { |
|
|
|
|
defaultSelector = ProxySelector.getDefault(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static class Loader { |
|
|
|
|
static volatile OkHttp INSTANCE = new OkHttp(); |
|
|
|
|
@ -52,14 +59,14 @@ public class OkHttp { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setProxy(String proxy) { |
|
|
|
|
ProxySelector.setDefault(selector()); |
|
|
|
|
selector().setProxy(proxy); |
|
|
|
|
ProxySelector.setDefault(TextUtils.isEmpty(proxy) ? defaultSelector : selector()); |
|
|
|
|
if (!TextUtils.isEmpty(proxy)) selector().setProxy(proxy); |
|
|
|
|
client = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static ProxySelector selector() { |
|
|
|
|
public static OkProxySelector selector() { |
|
|
|
|
if (get().selector != null) return get().selector; |
|
|
|
|
return get().selector = new ProxySelector(); |
|
|
|
|
return get().selector = new OkProxySelector(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkHttpClient client() { |
|
|
|
|
@ -133,7 +140,7 @@ public class OkHttp { |
|
|
|
|
|
|
|
|
|
private static OkHttpClient.Builder getBuilder() { |
|
|
|
|
OkHttpClient.Builder builder = new OkHttpClient.Builder().addInterceptor(new OkhttpInterceptor()).connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS).readTimeout(TIMEOUT, TimeUnit.MILLISECONDS).writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); |
|
|
|
|
builder.proxySelector(selector()); |
|
|
|
|
builder.proxySelector(ProxySelector.getDefault()); |
|
|
|
|
return builder; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|