gpt4 book ai didi

android - 使用改造缓存特定响应

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:13 27 4
gpt4 key购买 nike

我正在使用 retrofit2 来使用缓存拦截器兑现响应,但我想缓存特定请求而不是全部,所以我执行以下操作。我将我的 api 定义为:

public interface ExampleApi {
@GET("home/false")
@Headers("MyCacheControl: public, max-age=60000")
Observable<ExampleModel> getDataWithCache();

@GET("hello")
@Headers("MyCacheControl: no-cache")
Observable<ExampleModel> getDataWithoutCache();
}

那么我的拦截器是:

public class OfflineResponseInterceptor implements Interceptor {

// tolerate 4-weeks stale
private static final int MAX_STALE = 60 * 60 * 24 * 28;
private final Context context;

public OfflineResponseInterceptor(Context context) {
this.context = context;
}

@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();

if (!NetworkUtil.isConnected(context)) {
request = request.newBuilder()
.removeHeader("Pragma")
.header("Cache-Control", "public, only-if-cached, max-stale=" + MAX_STALE)
.build();
}

return chain.proceed(request);
}
}

public class OnlineResponseInterceptor implements Interceptor {

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

Request request = chain.request();
String cacheControl = request.header("MyCacheControl");
Logger.debug("okhttp MyCacheControl ", cacheControl + " ");
okhttp3.Response originalResponse = chain.proceed(request);

return originalResponse.newBuilder()
.removeHeader("Pragma")
.header("Cache-Control", cacheControl)
.build();
}
}

它工作正常,但我想知道实现我想要的最好方法。除了 header 之外,还有另一种方法可以识别我的请求并区分它们。

最佳答案

最后,感谢andre tietz他根据请求通过自定义注释提出了另一种解决方案。

关于android - 使用改造缓存特定响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45610300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com