Мое приложение получает данные JSON с сервера. Если я использую мой собственный JSON API , данные загружаются только в интернет. Но если я использую этот API (https://pixabay.com/api/?key=5303976-fd6581ad4ac165d1b75cc15b3&д = котенок&image_type = фото&довольно = верно), данные отображаются также в автономном режиме, После того, как приложение получило подключение к интернету.
Тот же код, один URL-адрес json загружается также после потери подключения к Интернету, данные другого не отображаются после отключения Интернета. Как хранить данные в Android-кеше со стороны сервера, как этот URL (https://pixabay.com/api/?key=5303976-fd6581ad4ac165d1b75cc15b3&д = котенок&image_type = фото&довольно = верно).
Мой API (api1.php)
<?php
require("includes/connect.php");
header('Content-Type: application/json');
$query="SELECT * FROM implink";
$result = $con->query('SELECT id,heading,content FROM implink');
$rows = $result->fetchAll(PDO::FETCH_ASSOC);
header('Content-Type: application/json;charset=utf-8');
echo json_encode(['info' => $rows],
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
?>
Мое первое предложение — не публиковать ваш ключ API. Pixabay может быть бесплатным, но совместное использование ключей API в Интернете поставит вас под угрозу инфраструктуру.
При поиске запроса кажется, что Pixabay устанавливает некоторые заголовки, которые могут повлиять на ваш кеш.
Access-Control-Max-Age → 86400
Cache-Control → max-age=86400
Content-Type → application/json
Ознакомьтесь с документацией по Android на HttpResponseCache В нем описывается, как вы можете форсировать кеш-ответ после настройки HttpResponseCache.
try {
connection.addRequestProperty("Cache-Control", "only-if-cached");
InputStream cached = connection.getInputStream();
// the resource was cached! show it
} catch (FileNotFoundException e) {
// the resource was not cached
}
Других решений пока нет …