diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java index 26982414f..3d57378ff 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java @@ -31,6 +31,7 @@ import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.impl.ParseCallback; import com.fongmi.android.tv.utils.Sniffer; import com.github.catvod.crawler.Spider; +import com.github.catvod.net.OkCookieJar; import com.google.common.net.HttpHeaders; import com.orhanobut.logger.Logger; @@ -113,7 +114,7 @@ public class CustomWebView extends WebView { private void checkHeader(String url, Map headers) { for (String key : headers.keySet()) { - if (HttpHeaders.COOKIE.equalsIgnoreCase(key)) CookieManager.getInstance().setCookie(url, headers.get(key)); + if (HttpHeaders.COOKIE.equalsIgnoreCase(key)) OkCookieJar.sync(url, headers.get(key)); if (HttpHeaders.USER_AGENT.equalsIgnoreCase(key)) getSettings().setUserAgentString(headers.get(key)); } } diff --git a/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java b/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java index 31dd93265..f4b3ded10 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java +++ b/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java @@ -6,7 +6,6 @@ import android.webkit.CookieManager; import androidx.annotation.NonNull; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; @@ -16,23 +15,40 @@ import okhttp3.HttpUrl; public class OkCookieJar implements CookieJar { + private CookieManager manager; + + public OkCookieJar() { + try { + manager = CookieManager.getInstance(); + } catch (Throwable ignored) { + } + } + + public static void sync(String url, String cookie) { + if (TextUtils.isEmpty(cookie)) return; + for (String split : cookie.split(";")) { + CookieManager.getInstance().setCookie(url, split); + } + } + @NonNull @Override public synchronized List loadForRequest(@NonNull HttpUrl url) { try { List items = new ArrayList<>(); - String cookie = CookieManager.getInstance().getCookie(url.toString()); - if (!TextUtils.isEmpty(cookie)) for (String split : cookie.split(";")) items.add(Cookie.parse(url, split)); + String cookie = manager.getCookie(url.toString()); + if (TextUtils.isEmpty(cookie)) return Collections.emptyList(); + for (String split : cookie.split(";")) items.add(Cookie.parse(url, split)); return items; } catch (Throwable e) { - return new ArrayList<>(); + return Collections.emptyList(); } } @Override public synchronized void saveFromResponse(@NonNull HttpUrl url, @NonNull List cookies) { try { - for (Cookie cookie : cookies) CookieManager.getInstance().setCookie(url.toString(), cookie.toString()); + for (Cookie cookie : cookies) manager.setCookie(url.toString(), cookie.toString()); } catch (Throwable ignored) { } } diff --git a/quickjs/src/main/java/com/fongmi/quickjs/utils/Connect.java b/quickjs/src/main/java/com/fongmi/quickjs/utils/Connect.java index f8b1925d2..d593aed37 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/utils/Connect.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/utils/Connect.java @@ -1,6 +1,7 @@ package com.fongmi.quickjs.utils; import com.fongmi.quickjs.bean.Req; +import com.github.catvod.net.OkCookieJar; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Json; import com.github.catvod.utils.Util; @@ -25,6 +26,7 @@ import okhttp3.Response; public class Connect { public static Call to(String url, Req req) { + OkCookieJar.sync(url, req.getHeader().get(HttpHeaders.COOKIE)); OkHttpClient client = OkHttp.client(req.isRedirect(), req.getTimeout()); return client.newCall(getRequest(url, req, Headers.of(req.getHeader()))); }