Я использую okhttp3 для отправки запросов на сервер, а не для модернизации.Моя идея сделать звонок и сохранить ответ в кеше на 15 минут.если в течение этих 15 минут запрос будет выполнен снова, восстановите ответ кеша, через 15 минут запросите его снова с сервера.
Это мой код:
public class Handler_JSON_get {
public Handler_JSON_get() {
}
public String makeServiceCall(String url, JSONObject data) {
final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
Cache cache = new Cache(new File(Environment.getExternalStorageDirectory().getPath() + "/Android/data/MY_PACKAGE/", "cache"), 10 * 1024 * 1024);
OkHttpClient okHttpClient;
Log.i("2134","Usando caché");
okHttpClient = new OkHttpClient.Builder()
.addNetworkInterceptor(provideCacheInterceptor())
.readTimeout(45, TimeUnit.SECONDS)
.protocols(Arrays.asList(Protocol.HTTP_1_1))
.addInterceptor(provideCacheInterceptor())
.cache(cache)
.build();
Request request = new Request.Builder()
.url(url)
.get()
.build();
try {
Response response = okHttpClient.newCall(request).execute();
Log.i(TAG,"Response:"+response.code());
return response.body().string();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Interceptor provideCacheInterceptor() {
return new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
CacheControl cacheControl = new CacheControl.Builder()
.maxAge(15, TimeUnit.MINUTES)
.build();
return response.newBuilder()
.header("cache", cacheControl.toString())
.build();
}
};
}
}
Проблемаон всегда звонит на сервер, и у меня много сомнений.
okhttp3 отвечает за проверку наличия кэшированного ответа в хранилище?
При вызове сохраняется файл журнала,это правильный файл?
Что мне не хватает или что я делаю не так?
Я видел, что по этому поводу довольно много вопросов, но я не могу сделать эти ответы совместимымис моим кодом.
Я был бы искренне признателен за части, которые необходимы в моем коде для правильной работы, я начинаю сходить с ума.
Заранее спасибо.