2015-03-14 12 views
19

Nella mia applicazione Android, sto usando Retrofit con OkHttpClient con la cache abilitata per accedere ad alcune API. Alcune delle nostre API a volte restituiscono dati vuoti. Forniamo un pulsante "Aggiorna" nell'app per consentire al client di ricaricare i dati da un'API specifica.Come dire a OkHttpClient di ignorare la cache e forzare l'aggiornamento dal server?

Come dire a OkHttpClient che una richiesta specifica deve ignorare la voce nella cache. In alternativa, esiste un meccanismo per eliminare la risposta memorizzata nella cache corrispondente a una singola richiesta?

Vedo il metodo Cache.remove (richiesta) ma è contrassegnato come privato.

risposta

21

Come Jake Wharton suggerito nel issues, fare questo per ignorare la cache:

request.setCacheControl(CacheControl.FORCE_NETWORK); 
+0

stavo usando una vecchia versione, aggiornata alla 3.4 e il vostro lavoro soluzione. Grazie inder – nidhin

+0

è in grado di impostare cacheControl dalla classe OkHttpClient, non dalla classe Request? – zihadrizkyef

+4

Sì - per disattivare la memorizzazione nella cache a livello globale, creare il client con una cache null: 'nuovo OkHttpClient(). NewBuilder(). Cache (null) .build();' – Simon