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(); } } }