diff --git a/app/src/main/java/com/github/catvod/utils/okhttp/OkHttpUtil.java b/app/src/main/java/com/github/catvod/utils/okhttp/OkHttpUtil.java index 214d974..3f04a11 100644 --- a/app/src/main/java/com/github/catvod/utils/okhttp/OkHttpUtil.java +++ b/app/src/main/java/com/github/catvod/utils/okhttp/OkHttpUtil.java @@ -3,20 +3,20 @@ package com.github.catvod.utils.okhttp; import com.github.catvod.crawler.SpiderDebug; import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import okhttp3.Call; -import okhttp3.OkHttpClient; -import okhttp3.Response; +import okhttp3.*; public class OkHttpUtil { public static final String METHOD_GET = "GET"; public static final String METHOD_POST = "POST"; - public static final int DEFAULT_TIMEOUT = 20; + private static final int DEFAULT_TIMEOUT = 15; private static final Object lockO = new Object(); @@ -27,10 +27,24 @@ public class OkHttpUtil { */ private static OkHttpClient noRedirectClient = null; + public static HashMap> cookieStore = new HashMap<>(); + public static OkHttpClient defaultClient() { synchronized (lockO) { if (defaultClient == null) { OkHttpClient.Builder builder = new OkHttpClient.Builder() + .cookieJar(new CookieJar() { + @Override + public void saveFromResponse(HttpUrl httpUrl, List list) { + cookieStore.put(httpUrl.host(), list); + } + + @Override + public List loadForRequest(HttpUrl httpUrl) { + List cookies = cookieStore.get(httpUrl.host()); + return cookies != null ? cookies : new ArrayList<>(); + } + }) .readTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) .writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) @@ -164,7 +178,7 @@ public class OkHttpUtil { public static void cancel(Object tag) { cancel(defaultClient(), tag); } - + public static void cancelAll() { cancelAll(defaultClient()); }