Android入门——OkHttp3之Cookies管理及持久化

持久化管理cookie的几种方法:

(一)特简单!直接使用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的区别分析 (部分内容仅供参考)


 

 

你可能感兴趣的:(Android入门)