Я пытаюсь использовать автономный метод кэширования Android, используя OkHttp. Поток, как это:Android OkHttp как обращаться с ETag
- Я посылаю запрос HTTP с пустой строкой ETag в поле заголовка
if-none-catched
на сервер, и сервер возвращает правильную ETag. - Затем я сохраняю ETag и кеширую ответ.
- В следующий раз, когда я запускаю тот же служебный вызов, я получаю тот же ETag и устанавливаю его в заголовок HTTP-запроса, и сервер будет возвращать HTTP 304, если ETag тот же.
Моя проблема теперь в том, как я могу хранить и извлекать ETag? Будет ли обрабатываться по умолчанию OkHttp или мне нужно хранить SQLite? Я продолжаю искать Google о том, как OkHttp реализует образец кода ETag, но все, что я получаю, - это обычный метод кэширования. Ссылка Я имею в виду:
- I'm trying to use Java's HttpURLConnection to do a "conditional get", but I never get a 304 status code
- https://github.com/square/okhttp/wiki/Interceptors
- Correct way of setting up cache for OkHttp in Android
- https://gist.github.com/polbins/1c7f9303d2b7d169a3b1#file-restcontroller-java-L45
до сих пор, что я достиг только кэш для 1-го вызова службы времени, но никогда не получить последние данные с сервера больше. Цените, если кто-нибудь может предоставить некоторые рекомендации или найти хороший пример дескриптора ETag и if-none-catch
динамически для OkHttp для обмена. Любые разъяснения не стесняйтесь спрашивать.
какая часть кода включает/активирует кеш ответов okhttp? Я устанавливаю объект кеша в свой okhttpClient, но это не повлияло на мой ответ, и я даже не получаю etag обратно в качестве заголовка – cloud
Ваш сервер отправляет ETags? Кэш будет использовать их для последующих запросов для одного и того же URL-адреса. –
ya только что обновил и сервер отправил ETags сейчас, теперь у меня есть 2 вопроса: один я не могу получить новый etag из предыдущего ответа, чтобы добавить к следующему запросу; другой - я пытаюсь запросить ETags жесткого кода для тестирования, я успешно получаю 304 от ответа, но не могу прочитать ответ кэша. А также ответ сервера с заголовком Cache-Control «no-cache, max-age = 0», это влияет? – cloud