Y at-il un moyen de détecter si une réponse Retrofit provient du cache OkHttp configuré ou est une réponse en direct?Détecter si la réponse OkHttp provient du cache (avec Retrofit)
définition du client:
Cache cache = new Cache(getCacheDirectory(context), 1024 * 1024 * 10);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.cache(cache)
.build();
définition Api:
@GET("/object")
Observable<Result<SomeObject>> getSomeObject();
appel Exemple:
RetroApi retroApi = new Retrofit.Builder()
.client(okHttpClient)
.baseUrl(baseUrl)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(RetroApi.class);
result = retroApi.getSomeObject().subscribe((Result<SomeObject> someObjectResult) -> {
isFromCache(someObjectResult); // ???
});
Est-ce que cette citation provient d'une conférence ou d'une autre ressource en ligne? Si oui, pourriez-vous s'il vous plaît fournir un lien? – user2340612
Il est préférable de vérifier 'result.response(). Raw(). CacheResponse()! = Null'. Si le client valide à nouveau la réponse mise en cache et reçoit un 304, à la fois 'networkResponse()' et 'cacheResponse()' seront non-null. – apottere
Oui, en fonction de la sémantique et du comportement de votre application. –