Android Ok, как обращаться с ETag
Я пытаюсь сделать Android метод автономного кэширования с помощью OkHttp. Поток такой:
- Я отправляю HTTP-запрос с пустой строкой ETag в поле заголовка
if-none-catched
на сервер, и сервер возвращает правильный ETag. - Затем я сохраняю ETag и кеширую ответ.
- В следующий раз, когда я запускаю тот же сервисный вызов, я получаю тот же ETag и устанавливаю его в заголовок HTTP-запроса, и сервер возвращает HTTP 304, если ETag совпадает.
Моя проблема сейчас в том, как я могу сохранить и получить ETag? Будет ли обрабатываться OkHttp по умолчанию или мне нужно хранить в SQLite? Я продолжаю искать в Google информацию о том, как OkHttp реализует пример кода ETag, но все, что я получаю, это обычный метод кэширования. Ссылка, на которую я ссылаюсь:
- Я пытаюсь использовать Java HttpURLConnection для "условного получения", но я никогда не получаю код состояния 304
- https://github.com/square/okhttp/wiki/Interceptors
- Правильный способ настройки кеша для OkHttp в Android
- https://gist.github.com/polbins/1c7f9303d2b7d169a3b1
до сих пор я достиг только кеша для первого вызова службы, но больше никогда не получаю последние данные с сервера. Спасибо, если кто-то может дать некоторые рекомендации или нашел какой-либо хороший пример обработки ETag и if-none-catch
динамически для OkHttp поделиться с. Любые разъяснения не стесняйтесь спрашивать.
1 ответ
Вам просто нужно включить кэш ответов OkHttp. Он будет использовать ETag, если ваш веб-сервер вернет его.