33import java .io .File ;
44import java .io .IOException ;
55import java .util .ArrayList ;
6+ import java .util .Collections ;
67import java .util .List ;
78import java .util .Map ;
89import java .util .concurrent .ConcurrentHashMap ;
@@ -61,10 +62,26 @@ public CookieStore(@Nullable File directory, long maxSize, boolean enabledMemory
6162 }
6263 }
6364
64- private static String md5 (String key ) {
65- return ByteString .encodeUtf8 (key ).md5 ().hex ();
65+
66+ /**
67+ * 保存url对应的cookie,线程安全,若开启了磁盘缓存,建议在子线程调用
68+ *
69+ * @param url HttpUrl
70+ * @param cookie Cookie
71+ */
72+ @ Override
73+ public void saveCookie (HttpUrl url , Cookie cookie ) {
74+ List <Cookie > cookies = new ArrayList <>();
75+ cookies .add (cookie );
76+ saveCookie (url , cookies );
6677 }
6778
79+ /**
80+ * 保存url对应的所有cookie,线程安全,若开启了磁盘缓存,建议在子线程调用
81+ *
82+ * @param url HttpUrl
83+ * @param cookies List<Cookie>
84+ */
6885 @ Override
6986 public void saveCookie (HttpUrl url , List <Cookie > cookies ) {
7087 final String host = url .host ();
@@ -89,20 +106,20 @@ public void saveCookie(HttpUrl url, List<Cookie> cookies) {
89106 }
90107 }
91108
92- @ Override
93- public void saveCookie ( HttpUrl url , Cookie cookie ) {
94- List < Cookie > cookies = new ArrayList <>();
95- saveCookie ( url , cookies );
96- }
97-
109+ /**
110+ * 加载url对应的cookie,线程安全,若开启了磁盘缓存,建议在子线程调用
111+ *
112+ * @param url HttpUrl
113+ * @return List<Cookie>
114+ */
98115 @ Override
99116 public List <Cookie > loadCookie (HttpUrl url ) {
100117 final String host = url .host ();
101118 List <Cookie > cookies ;
102119 if (memoryCache != null ) { //1、开启了内存缓存,则从内存查找cookie
103120 cookies = memoryCache .get (host );
104121 if (cookies != null ) { //2、内存缓存查找成功,直接返回
105- return cookies ;
122+ return Collections . unmodifiableList ( cookies ) ;
106123 }
107124 }
108125 cookies = new ArrayList <>();
@@ -111,7 +128,7 @@ public List<Cookie> loadCookie(HttpUrl url) {
111128 try {
112129 //4、磁盘缓存查找
113130 snapshot = diskCache .get (md5 (host ));
114- if (snapshot == null ) return cookies ;
131+ if (snapshot == null ) return Collections . unmodifiableList ( cookies ) ;
115132 List <Cookie > cookiesList = readCookie (url , snapshot .getSource (0 ));
116133 if (!cookiesList .isEmpty ())
117134 cookies .addAll (cookiesList );
@@ -123,9 +140,14 @@ public List<Cookie> loadCookie(HttpUrl url) {
123140 }
124141 if (!cookies .isEmpty ()) //5、磁盘缓存查找成功,添加进内存缓存
125142 memoryCache .put (host , cookies );
126- return cookies ;
143+ return Collections . unmodifiableList ( cookies ) ;
127144 }
128145
146+ /**
147+ * 移除url对应的cookie,线程安全,若开启了磁盘缓存,建议在子线程调用
148+ *
149+ * @param url HttpUrl
150+ */
129151 @ Override
130152 public void removeCookie (HttpUrl url ) {
131153 String host = url .host ();
@@ -141,6 +163,9 @@ public void removeCookie(HttpUrl url) {
141163 }
142164 }
143165
166+ /**
167+ * 移除所有的cookie,线程安全,若开启了磁盘缓存,建议在子线程调用
168+ */
144169 @ Override
145170 public void removeAllCookie () {
146171 if (memoryCache != null )
@@ -189,4 +214,8 @@ private void abortQuietly(@Nullable DiskLruCache.Editor editor) {
189214 } catch (Exception ignored ) {
190215 }
191216 }
217+
218+ private static String md5 (String key ) {
219+ return ByteString .encodeUtf8 (key ).md5 ().hex ();
220+ }
192221}
0 commit comments