A persistent CookieJar implementation for OkHttp 3 based on SharedPreferences.
If you're looking for a OkHttp 2/HTTPUrlConnection persistent CookieStore it can be found at this Gist.
Step 1. Add the JitPack repository in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
Step 2. Add the dependency
dependencies {
compile 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
}
Create an instance of PersistentCookieJar
passing a CookieCache
and a CookiePersistor
:
ClearableCookieJar cookieJar =
new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context));
Then just add the CookieJar when building your OkHttp client:
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.cookieJar(cookieJar)
.build();
This is a really simple library but here are some of the things that it provides:
Possibility to clear the jar: PersistentCookieJar
implements ClearableCookieJar
interface that declares a clear()
method for removing all cookies from the jar.
Possibility to clear session cookies: PersistentCookieJar
implements ClearableCookieJar
interface that declares a clearSession()
method for removing session cookies from the jar.
Decoupled and extensible: CookieCache
and CookiePersistor
are interfaces so you can provide your own implementation for each one.
CookieCache
represents an in-memory cookie storage. SetCookieCache
is the provided implementation that uses a Set to store the Cookies.CookiePersistor
represents a persistent storage. SharedPrefsCookiePersistor
is the provided implementation that uses a SharedPreferences to persist the Cookies.Thread-safe: PersistentCookieJar
public methods are synchronized so there is no need to worry about threading if you need to implement a CookieCache
or a CookiePersistor
.
The following configuration is only needed for version 0.9.2 and below:
-dontwarn com.franmontiel.persistentcookiejar.**
-keep class com.franmontiel.persistentcookiejar.**
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
Copyright 2016 Francisco José Montiel Navarro
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
对于Cookie,在这里不进行更多的描述,不懂的可以去看看这篇博客 深入解析Cookie技术 而对于cookie的使用,鸿洋大神封装的okhttputils也提供了cookie的持久化管理工具,使用起来也很方便。有兴趣的可以去看看 okhttpsutils 在这里,我要介绍的是PersistentCookieJar这个开源类,使用起来非常简单,只需要在初始化时加入以下代码即可: Clearable
在github中https://github.com/franmontiel/PersistentCookieJar的第一步记载中需先在project的gradle中加入 maven { url "https://jitpack.io" } 完整版如下: allprojects { repositories { ... maven { url "https:
Error:(52, 13) Failed to resolve: com.github.franmontiel:PersistentCookieJar:v1.0.1 1.在github中https://github.com/franmontiel/PersistentCookieJar的第一步记载中需先在project的gradle中加入 allprojects { repositori