OkHttp3.6.0+Retrofit2.2.0持久化cookie

来源:互联网 发布:相片水印软件 编辑:程序博客网 时间:2024/06/06 01:32

配置cookie信息:

1 保存cookie信息(一般在登录app之后保存cookie信息):

/** * Created by zhang on 2017/4/14 09 : 57. */public class ReceivedCookiesInterceptor implements Interceptor {@Overridepublic Response intercept(Chain chain) throws IOException {    Response originalResponse = chain.proceed(chain.request());    //这里获取请求返回的cookie    if (!originalResponse.headers("Set-Cookie").isEmpty()) {        final StringBuffer cookieBuffer = new StringBuffer();        Disposable subscribe =    Observable.fromIterable        (originalResponse.headers("Set-Cookie"))                .map(new Function<String, String>() {                    @Override                    public String apply(@NonNull String list)                     throws Exception {                        String[] split = list.split(";");                        return split[0];                    }                }).subscribe(new Consumer<String>() {                    @Override                    public void accept(@NonNull String cookie)                     throws Exception {                        if (!TextUtils.isEmpty(cookie)) {                            cookieBuffer.append(cookie).append(";");                        }                    }                });        //path和domain是固定信息,一般不变,可根据你的项目而定,以下仅供参考        cookieBuffer.append("path=/;");        cookieBuffer.append("domain=.api.app.com");        SharedPrefUtil.saveSharedPrfString("cookie", cookieBuffer.toString());        subscribe.dispose();    }    return originalResponse;}}

2 添加cookie信息(携带cookie信息请求服务器数据):

/** * Created by zhang on 2017/4/14 09 : 58. */public class AddCookiesInterceptor implements Interceptor {@Overridepublic Response intercept(Chain chain) throws IOException {    final Request.Builder builder = chain.request().newBuilder();    Observable.just(SharedPrefUtil.getSharedPrfString("cookie", ""))            .subscribe(new Consumer<String>() {                @Override                public void accept(@NonNull String cookie) throws Exception {                    //添加cookie                    builder.addHeader("Cookie", cookie);                }            });    return chain.proceed(builder.build());}}
0 0