Add cookie jar

pull/212/head
FongMi 2 years ago
parent 1bdc2c8742
commit dd8574901c
  1. 4
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java
  2. 63
      catvod/src/main/java/com/github/catvod/net/CookieJar.java
  3. 2
      catvod/src/main/java/com/github/catvod/net/OkHttp.java

@ -61,14 +61,18 @@ public class CustomWebView extends WebView {
public void initSettings() {
this.timer = () -> stop(true);
this.empty = new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes()));
getSettings().setSupportZoom(true);
getSettings().setUseWideViewPort(true);
getSettings().setDatabaseEnabled(true);
getSettings().setDomStorageEnabled(true);
getSettings().setJavaScriptEnabled(true);
getSettings().setBuiltInZoomControls(true);
getSettings().setDisplayZoomControls(false);
getSettings().setLoadWithOverviewMode(true);
getSettings().setMediaPlaybackRequiresUserGesture(false);
getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
CookieManager.getInstance().setAcceptThirdPartyCookies(this, true);
setWebViewClient(webViewClient());
}

@ -0,0 +1,63 @@
package com.github.catvod.net;
import android.text.TextUtils;
import android.webkit.CookieManager;
import androidx.annotation.NonNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import okhttp3.Cookie;
import okhttp3.HttpUrl;
public class CookieJar implements okhttp3.CookieJar {
private static class Loader {
static volatile CookieJar INSTANCE = new CookieJar();
}
public static CookieJar get() {
return Loader.INSTANCE;
}
private final CookieManager manager;
public CookieJar() {
manager = CookieManager.getInstance();
}
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
for (Cookie cookie : cookies) {
manager.setCookie(url.toString(), cookie.toString());
}
}
@NonNull
@Override
public List<Cookie> loadForRequest(@NonNull HttpUrl url) {
return get(url);
}
public List<Cookie> get(HttpUrl url) {
String cookie = manager.getCookie(url.toString());
if (cookie == null || cookie.isEmpty()) return Collections.emptyList();
List<Cookie> items = new ArrayList<>();
for (String text : cookie.split(";")) items.add(Cookie.parse(url, text.trim()));
return items;
}
public void remove(HttpUrl url, List<String> cookieNames, int maxAge) {
String cookie = manager.getCookie(url.toString());
if (TextUtils.isEmpty(cookie)) return;
List<String> filter = cookieNames != null ? cookieNames : Arrays.asList(cookie.split(";"));
for (String text : filter) manager.setCookie(url.toString(), text + "=;Max-Age=" + maxAge);
}
public void removeAll() {
manager.removeAllCookies(null);
}
}

@ -140,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);
OkHttpClient.Builder builder = new OkHttpClient.Builder().cookieJar(CookieJar.get()).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(get().proxy ? selector() : defaultSelector);
return builder;
}

Loading…
Cancel
Save