AddHeaderInterceptor 与SaveCookieInterceptor拦截器

package com.c03.jy.wanandroid.playandroid.data.source.remote.retrofit.intercept;

import android.text.TextUtils;

import com.c03.jy.wanandroid.playandroid.MyApplication;
import com.c03.jy.wanandroid.playandroid.data.AppConstact;
import com.c03.jy.wanandroid.playandroid.utils.SharePreferenceUtils;

import java.io.IOException;

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

public class AddHeaderInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {

    Request request = chain.request();
    String domain = request.url().host();
    String requestUrl = request.url().toString();

    Request.Builder builder = request.newBuilder();

    if(requestUrl.contains(AppConstact.COLLECTIONS_WEBSITE) || requestUrl.contains(AppConstact.ARTICLE_WEBSITE)
                    ||requestUrl.contains(AppConstact.TODO_WEBSITE) || requestUrl.contains(AppConstact.UNCOLLECTIONS_WEBSITE)){

                String cookies = SharePreferenceUtils.getFromGlobalSpw(MyApplication.context, domain,"" );

                if(!TextUtils.isEmpty(cookies)){
                    builder.addHeader(AppConstact.COOKIE_NAME, cookies);
        }
    }
    return chain.proceed(builder.build());
}

}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

package com.c03.jy.wanandroid.playandroid.data.source.remote.retrofit.intercept;

import android.text.TextUtils;
import android.util.Log;

import com.c03.jy.wanandroid.playandroid.MyApplication;
import com.c03.jy.wanandroid.playandroid.data.AppConstact;
import com.c03.jy.wanandroid.playandroid.utils.SharePreferenceUtils;

import java.io.IOException;
import java.util.HashSet;
import java.util.List;

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

public class SaveCookieInterceptor implements Interceptor {

@Override
public Response intercept(Chain chain) throws IOException {

    Request request = chain.request();
    Response response = chain.proceed(request);
    String domain = request.url().host();
    String requestUrl = request.url().toString();

    // 如果 response 的header 中包含 cookie 信息。并且此次请求是登录或者注册
    if(!TextUtils.isEmpty(response.header(AppConstact.SET_COOKIE_KEY))
            && (requestUrl.contains(AppConstact.SAVE_USER_LOGIN_KEY)
            || requestUrl.contains(AppConstact.SAVE_USER_REGISTER_KEY))){

        // 从header 中取出cookie,取出的事一个list。
        List<String> cookies = response.headers(AppConstact.SET_COOKIE_KEY);

        if(cookies.size() > 0){
            HashSet<String> cookieSet = new HashSet<>();
            for(String cooke : cookies){
                for(String value : cooke.split(";")){
                    if(!TextUtils.isEmpty(value)){
                        cookieSet.add(value);

                    }
                }
            }

            StringBuilder sb = new StringBuilder();
            for (String aCookieSet : cookieSet) {
                sb.append(aCookieSet);
                sb.append(";");
            }

            sb.deleteCharAt(sb.length()-1);

            SharePreferenceUtils.saveToGlobalSpw(MyApplication.context,domain,sb.toString());
        }
    }

    return response;
}

}

…用法…
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.addInterceptor(new AddHeaderInterceptor())
.addInterceptor(new SaveCookieInterceptor())
.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS)
.writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS)
.readTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS)
.build();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值