Не удается выполнить кеширование HTTP в android

Я пытаюсь использовать OkHttp и Retrofit для кэширования HTTP-запросов. Но я, кажется, не думаю, почему он не работает.

@Headers("Cache-Control: public, max-age=640000, s-maxage=640000 , max-stale=10000000") @FormUrlEncoded @POST("/news/getNewslist/") void newsListByGenre(@Field("news_genre") String genre, Callback<ArrayList<NewsStory>> callback); 

Это один из запросов, он имеет все необходимые заголовки. Более того, в попытке проверить, что что-то написано в File Cache, я вручную назначил кеш OkHttpClient.

 OkHttpClient name = new OkHttpClient(); try { if (!cache.exists()) cache.createNewFile(); name.setResponseCache(new HttpResponseCache(cache, 10 * 1024 * 1024)); } catch (IOException e) { e.printStackTrace(); } 

Созданный мной кеш-файл содержит всего 36 байт, поэтому я уверен, что ничего не кэшировано.

Я также пытался убедиться, что серверу нужны заголовки, хотя я хочу, чтобы он работал без помех сервера, но я также установил заголовки управления кэшем в запросе. Это отладочный журнал от модернизации.

 null: HTTP/1.1 200 OK Cache-Control: public, max-age=360000 Connection: Keep-Alive Content-Length: 5167 Content-Type: application/json Date: Fri, 28 Jun 2013 01:00:22 GMT Keep-Alive: timeout=5, max=99 Server: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 X-Android-Received-Millis: 1372381311315 X-Android-Response-Source: NETWORK 200 X-Android-Selected-Transport: http/1.1 X-Android-Sent-Millis: 1372381311048 X-Powered-By: PHP/5.4.7 

Я читал механизм кэширования http снова и снова, но, кажется, я что-то упускаю.

Solutions Collecting From Web of "Не удается выполнить кеширование HTTP в android"

Вы не можете кэшировать ответы POST . Вместо этого используйте метод GET . Ниже приведен рабочий пример Retrofit и OkHttp с кешированием:

https://gist.github.com/swankjesse/5889518

@Jesse Wilson – я думаю, что имеет смысл кэшировать ответ иногда – я работаю над приложением, которое делает сетевой вызов, но если пользователь переключает действия и возвращается, я хотел бы использовать те же данные, что и ранее, возвращаемые ответом POST. Я знаю, что могу использовать ORM и сохранять объекты mu и т. Д., Похоже, было бы гораздо проще сказать, что модифицировать использовать тот же ответ.