1
何らかの理由で、要求をキャッシュする必要がある場合でも、OkHttp response.cacheResponse()
は常にnullを返します。次のコードでは、私はhttp://httpbin.org/cache/60
という2つのリクエストを作成していますが、その2番目のリクエストはキャッシュから取得されると思います。しかし、出力からわかるように、そうではありません。OkHttpは要求をキャッシュしません
私には何が欠けていますか?
コード:
@Test
public void test2_okhttp() throws IOException {
int cacheSize = 100 * 1024 * 1024; // 100 MiB
File cacheDir = new File("/tmp/ok_cache");
cacheDir.mkdirs();
Cache cache = new Cache(cacheDir, cacheSize);
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
String url = "http://httpbin.org/cache/60";
for(int i = 0; i < 2; i++) {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
System.out.println("response1.cacheResponse() = " + response.cacheResponse());
System.out.println("response1.networkResponse() = " + response.networkResponse());
}
}
出力:
response1.cacheResponse() = null
response1.networkResponse() = Response{protocol=http/1.1, code=200, message=OK, url=http://httpbin.org/cache/60}
response1.cacheResponse() = null
response1.networkResponse() = Response{protocol=http/1.1, code=200, message=OK, url=http://httpbin.org/cache/60}