123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package com.benyanyi.okhttp.config;
- import android.content.Context;
- import com.benyanyi.okhttp.util.InternetUtil;
- import org.jetbrains.annotations.NotNull;
- import java.io.IOException;
- import okhttp3.CacheControl;
- import okhttp3.Interceptor;
- import okhttp3.Request;
- import okhttp3.Response;
- /**
- * @author YanYi
- * @date 2019-08-12 16:51
- * @email ben@yanyi.red
- * @overview
- */
- class CacheInterceptor implements Interceptor {
- private Context context;
- CacheInterceptor(Context context) {
- this.context = context;
- }
- @NotNull
- @Override
- public Response intercept(Chain chain) throws IOException {
- Request request = chain.request();
- if (InternetUtil.isNetWorkConnected(context)) {
- request = request.newBuilder()
- .cacheControl(CacheControl.FORCE_CACHE)
- .build();
- }
- Response response = chain.proceed(request);
- if (!InternetUtil.isNetWorkConnected(context)) {
- int maxAge = 0 * 60;
- // 有网络时 设置缓存超时时间0个小时
- response.newBuilder()
- .header("Cache-Control", "public, max-age=" + maxAge)
- .removeHeader("Pragma")// 清除头信息,因为服务器如果不支持,会返回一些干扰信息,不清除下面无法生效
- .build();
- } else {
- // 无网络时,设置超时为4周
- int maxStale = 60 * 60 * 24 * 28;
- // val maxStale = 0
- response.newBuilder()
- .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
- .removeHeader("Pragma")
- .build();
- }
- return response;
- }
- }
|