如何告诉OkHttpClient忽略缓存并强制刷新服务器?

ind*_*der 25 android caching retrofit okhttp

在我的Android应用程序中,我使用Retrofit和OkHttpClient启用了缓存来访问某些API.我们的一些API有时会返回空数据.我们在应用程序中提供"刷新"按钮,以便客户端从特定API重新加载数据.

如何告诉OkHttpClient特定请求应忽略缓存条目.或者,是否有机制删除对应于单个请求的缓存响应?

我看到Cache.remove(请求)方法,但它被标记为私有.

ind*_*der 24

正如Jake Wharton在问题中所建议的,这样做是为了忽略缓存:

request.setCacheControl(CacheControl.FORCE_NETWORK);
Run Code Online (Sandbox Code Playgroud)

  • 是 - 要全局禁用缓存,请使用空缓存创建客户端:`new OkHttpClient().newBuilder().cache(null).build();` (6认同)
  • 是否能够从 OkHttpClient 类而不是从 Request 类设置 cacheControl? (2认同)
  • 是否可以注释一些API调用以完全不使用缓存? (2认同)

Ras*_*eed 6

@Headers("Cache-Control: no-cache") 
Run Code Online (Sandbox Code Playgroud)

在方法上应该有效。如果你想动态地做,你可以添加一个

@Header("Cache-Control") 
Run Code Online (Sandbox Code Playgroud)

字符串 cacheControl 参数并传递 null 或“no-cache”