我使用okhttp和改造調用REST服務。從該服務返回的數據存儲在我的Android應用程序內的一個SQLite數據庫。當我調用REST api時,如果數據沒有改變(由ETag或Last-Modified頭確定),我想讓Retrofit回調不做任何事(數據在DB中是OK的)。否則,我想從REST服務下載更新的JSON並更新數據庫(通過我的回調的onSuccess方法)。在okhttp我想處理Last-Modified和ETag的,但沒有緩存整個響應
在緩存中的所有設置磁盤緩存的響應的okhttp例子,我只需要緩存/存儲每個請求(而不是整個響應)的eTag /最後一次修改時間。
我應該通過自定義緩存實現時,我傳遞給okhttp這樣做,或是否有更好的界面,我應該用okhttp或改造使用?
一旦我有了執行安裝程序,我只需要在我的onFailure回調中處理304「錯誤」,什麼都不做?
沒有內置的將會做到這一點。 OkHttp沒有響應返回,它總是一個響應和標題。 – 2014-09-21 05:48:54
謝謝Jesse的迴應,替代解決方案是檢查響應是來自磁盤還是網絡,只處理來自網絡的響應(即更新數據庫)?我不想一遍又一遍地解析相同的JSON。或者我更好地實現自己的緩存,但該緩存只存儲「」,而不是完整的響應頭(而爲了節省空間)? – 2014-09-21 05:57:32
@JesseWilson我想用OkHttp3你的評論不再是真的?您從https://square.github.io/okhttp/3.x/okhttp/okhttp3/Response.html#networkResponse獲得的代碼應該涵蓋此否? – 2016-10-03 11:42:00