package com.android.app_base.http.interceptor;
|
|
import android.content.Context;
|
|
import com.blankj.utilcode.util.NetworkUtils;
|
|
import java.io.IOException;
|
|
import okhttp3.CacheControl;
|
import okhttp3.Interceptor;
|
import okhttp3.Request;
|
import okhttp3.Response;
|
|
/**
|
* @author Ljj
|
* @date 2023.03.02. 10:56
|
* @desc 网络请求缓存拦截器
|
*/
|
public class CacheInterceptor implements Interceptor {
|
|
private Context context;
|
public CacheInterceptor(){
|
|
}
|
public CacheInterceptor(Context context) {
|
this.context = context;
|
}
|
|
@Override
|
public Response intercept(Chain chain) throws IOException {
|
Request request = chain.request();
|
if (NetworkUtils.isAvailable()) {
|
Response response = chain.proceed(request);
|
// read from cache for 60 s
|
int maxAge = 60;
|
return response.newBuilder()
|
.removeHeader("Pragma")
|
.removeHeader("Cache-Control")
|
.header("Cache-Control", "public, max-age=" + maxAge)
|
.build();
|
} else {
|
//读取缓存信息
|
request = request.newBuilder()
|
.cacheControl(CacheControl.FORCE_CACHE)
|
.build();
|
Response response = chain.proceed(request);
|
//set cache times is 3 days
|
int maxStale = 60 * 60 * 24 * 3;
|
return response.newBuilder()
|
.removeHeader("Pragma")
|
.removeHeader("Cache-Control")
|
.header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
|
.build();
|
}
|
}
|
}
|