Retrofit でキャッシングをうまく動かそうとしていますが、何が間違っているのかよくわかりません。
使用:
build.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 になります。