我将我的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 staleprivate static final int MAX_STALE = 60 * 60 * 24 * 28;private final Context context;public OfflineResponseInterceptor(Context context) { this.context = context;}@OverrIDepublic 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 {@OverrIDepublic 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(); } }
它工作正常,但我想知道实现我想要的最佳方式.还有另一种方法来识别我的请求,并区分他们除了标题.
解决方法 最后,感谢 andre tietz,他通过自定义的annoutations提出了另一个解决方案. 总结以上是内存溢出为你收集整理的android – 使用改造缓存特定响应全部内容,希望文章能够帮你解决android – 使用改造缓存特定响应所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)