今天项目遇到一个需求: 处于安全考虑, 要求登录后保存 cookie到本地, 后面所有接口请求时都需要带上 cookie . (ps: 之前还真没遇到过, 所以没太在意, 今天查找了一些资料, 在此记录下来 )
OkHttp3中,对cookie而言,新增了两个类Cookiejar、Cookie两个类. 查看源码你会发现 : 在OkHttpClient创建时,传入这个CookieJar的实现,就能完成对Cookie的自动管理(有兴趣的朋友有空可以去看看).
我使用的是一个封装好的第三方的 依赖库
在 build.gradle 依赖地址:
compile 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
如果失败可以在 项目build.gradle 加上maven { url "https://jitpack.io" }
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
请求时调用:
PersistentCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context));
OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.addInterceptor(new LoginInterceptor())
.cookieJar(cookieJar)// 设置封装好的cookieJar
.build();
这样每次请求时, 都会带上保存好的cookie.