在Android上使用retrofit和okhttp,如何使用http缓存ETag? 我只添加了
File cacheDirectory = new File(ctx.getApplicationContext().getCacheDir().getAbsolutePath(), "HttpCache");
OkHttpClient ok = new OkHttpClient();
try {
Cache cache = new Cache(cacheDirectory, CACHE_SIZE);
ok.setCache(cache);
} catch (IOException e) {
LogUtils.e(LOG_TAG, e);
}
ok.setConnectTimeout(TIMEOUT_MILLISEC, TimeUnit.MILLISECONDS);
RestAdapter.Builder builder = new RestAdapter.Builder().setEndpoint(API_ROOT)
.setErrorHandler(new APIErrorHandler()).setRequestInterceptor(mRequestInterceptor).setClient(new OkClient(ok));
答案 0 :(得分:0)
Here's a gist演示了Retrofit + OkHttp。如果您的服务器在响应中返回ETag
标头,则OkHttp将在条件GET上验证该标头时包含If-None-Match
。
答案 1 :(得分:0)
也许你已经添加了一个自定义的intecepter //.addNetworkInterceptor(new CacheInterceptor()) //.addInterceptor(new CacheInterceptor())
会影响okhttp默认的eTag操作