From 138128568a31e2460f2fbb1ecf1e30c20c751315 Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 15 Dec 2023 00:01:38 +0800 Subject: [PATCH] Fix proxy --- .../java/com/github/catvod/net/OkHttp.java | 19 +++++++++++++------ ...roxySelector.java => OkProxySelector.java} | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) rename catvod/src/main/java/com/github/catvod/net/{ProxySelector.java => OkProxySelector.java} (97%) diff --git a/catvod/src/main/java/com/github/catvod/net/OkHttp.java b/catvod/src/main/java/com/github/catvod/net/OkHttp.java index 1db7bbdbd..18042d6fa 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -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; } } diff --git a/catvod/src/main/java/com/github/catvod/net/ProxySelector.java b/catvod/src/main/java/com/github/catvod/net/OkProxySelector.java similarity index 97% rename from catvod/src/main/java/com/github/catvod/net/ProxySelector.java rename to catvod/src/main/java/com/github/catvod/net/OkProxySelector.java index ea8027235..2269ae1e6 100644 --- a/catvod/src/main/java/com/github/catvod/net/ProxySelector.java +++ b/catvod/src/main/java/com/github/catvod/net/OkProxySelector.java @@ -14,7 +14,7 @@ import java.net.URI; import java.util.Collections; import java.util.List; -public class ProxySelector extends java.net.ProxySelector { +public class OkProxySelector extends java.net.ProxySelector { private List hosts; private Proxy proxy;