android okhttp3 cookie持久化管理

今天项目遇到一个需求: 处于安全考虑, 要求登录后保存 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.

你可能感兴趣的:(android okhttp3 cookie持久化管理)