我试图让缓存与 Retrofit 一起工作,但没有运气,我不太确定我做错了什么。
使用:
构建.gradle
compile 'com.squareup.okhttp:okhttp:1.5.+'
compile 'com.squareup.retrofit:retrofit:1.5.+'
示例调用
@Headers("Cache-Control: public, max-age=640000, s-maxage=640000 , max-stale=10000000")
@GET("/articles/{article}")
public void getArticle(
@Path("article") String id,
Callback<Article> cb
);
构建 API
File cacheDir = context.getCacheDir();
cache = null;
try {
cache = new HttpResponseCache(cacheDir, 10 * 1024 * 1024);
} catch (IOException e) {
e.printStackTrace();
}
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setResponseCache(cache);
OkClient okClient = new OkClient(okHttpClient);
api = new RestAdapter.Builder()
.setEndpoint(TestAPI.BASE_URL)
.setRequestInterceptor( ... only adding path params ... )
.setClient(okClient)
.build()
.create(TestAPI.class);
该调用有效,唯一的问题实际上是将其缓存...我在调用后检查 cache.getHitCount() 以检查是否有任何缓存的内容,并且它始终显示为 0。