只是为了让您知道这个答案是使用Retrofit 2测试版。为了这个答案的目的没有太大的区别。
我假设你有这样的东西来获得改造客户端。
private static Retrofit.Builder builder =
new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(new ErrorHandlingCallbackAdapter.ErrorHandlingCallAdapterFactory());
我希望你也有这样的方法:
public static <S> S createCachedService(Context context, Class<S> serviceClass) {
Retrofit retrofit = builder.client(sOkHttpClient).build();
return retrofit.create(serviceClass);
}
但你应该有这些方法2。一个增加了okhttp客户端,另一个没有。
public static <S> S createService(Context context, Class<S> serviceClass) {
Retrofit retrofit = builder.build();
return retrofit.create(serviceClass);
}
无论何时只需要使用缓存服务创建者进行缓存调用。
我的理解是,如果您希望对该端点的所有请求都跳过缓存,则还可以向端点添加@Header
注释。 okhttp应该尊重你的Cache-Control头。 类似于
public interface GitHubService {
@Headers("Cache-Control: no-cache")
@GET("https://stackoverflow.com/users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
快乐编码。