(一)特简单!直接使用PersistentCookieJar开源库: https://github.com/franmontiel/PersistentCookieJar
1. 配置
(1)在 project 的 gradle 中添加 JitPack 存储库:
maven { url "https://jitpack.io" }
allprojects {
repositories {
//其他存储库,此处省略
...
//cookie持久化jar包 添加以下语句!!!
maven { url "https://jitpack.io" }
}
}
(2) 在app.gradle中添加依赖引用:
//cookie持久化jar包
compile 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
dependencies {
//其他依赖,此处省略
...
//cookie持久化jar包
compile 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
}
2. 使用
(1)传入参数cookiecache和CookiePersistor,创建一个PersistentCookieJar实例
CookieJar cookieJar =
new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(Context));
//以context为MainActivity为例
CookieJar cookieJar =
new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(MainActivity.this));
(2)在构建OkHttpClient时添加CookieJar:
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.cookieJar(cookieJar)
.build();
(二)也比较简单,用JavaNetCookieJar
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieJar cookieJar = new JavaNetCookieJar(cookieManager);
还需要在app.gradle中添加依赖:
//JavaNetCookieJar
compile "com.squareup.okhttp3:okhttp-urlconnection:3.0.0-RC1"
dependencies {
...
//JavaNetCookieJar
compile "com.squareup.okhttp3:okhttp-urlconnection:3.0.0-RC1"
}
然后,同上面的(一)2.(2),在构建OkHttpClient时添加CookieJar
(三)稍复杂,手动实现Cookiejar
详情参考博客: 解决OKHttp不能自动缓存header cookies 里的 sessionid
然后,同上面的(一)2.(2),在构建OkHttpClient时添加CookieJar
相关文章推荐:
使用Okhttp/Retrofit持久化cookie的简便方式
okhttp3与旧版本okhttp的区别分析 (部分内容仅供参考)