No se puede realizar el almacenamiento en caché HTTP en android
He estado intentando utilizar OkHttp y Retrofit para almacenar en caché las peticiones http. Pero no parezco entender por qué no está funcionando.
@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);
Esta es una de las peticiones, que tiene todos los encabezados necesarios. Por otra parte, en un intento de probar que algo se escribe en caché de archivos asigné manualmente un caché a OkHttpClient.
- ¿Cómo se implementa el cursor de la base de datos de Android en los detalles?
- Google Cloud Endpoints EOFException
- ¿Por qué `` OnInfoListener` de MediaRecorder no se llama en código inferior cuando se alcanza el tamaño máximo de archivo
- Hacer eclipse depurar mi androide PROYECTO
- IndexOutOfBoundsException para setSpan - fuera del código de mi aplicación
OkHttpClient name = new OkHttpClient(); try { if (!cache.exists()) cache.createNewFile(); name.setResponseCache(new HttpResponseCache(cache, 10 * 1024 * 1024)); } catch (IOException e) { e.printStackTrace(); }
La caché de archivos que he creado tiene sólo 36 bytes, así que estoy seguro de que no hay nada en caché.
También he intentado cerciorarse de que el servidor tenga cabeceras requeridas, aunque quiero que trabaje sin interferencia del servidor pero fijé las cabeceras del control del escondrijo en la petición también. Este es el registro de depuración de retrofit.
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
He leído el mecanismo de caché de http una y otra vez, pero parece que estoy perdiendo algo.
- ¿Mi aplicación Android drena la batería?
- Limitación de la velocidad de fotogramas con Thread.sleep ()
- Flickr Oauth Conectarse con Scribe Library
- ¿Cómo puedo importar ShowcaseView en Eclipse?
- Depuración de Eclipse: while continue after return statement?
- Java.lang.IllegalArgumentException: Caracteres ilegales en la autoridad en el índice 7 al hacer la solicitud https
- Java / Android: clases locales anónimas vs clases nombradas
- ¿Leer Byte Array desde la vista de la superficie?
Realmente no se puede almacenar en caché respuestas POST
. En su lugar, utilice el método GET
. He aquí un ejemplo de trabajo de un Retrofit y OkHttp con almacenamiento en caché:
@ Jesse Wilson – Creo que tiene sentido para caché la respuesta a veces – Estoy trabajando en una aplicación que hace que la llamada de red, pero si el usuario cambia las actividades y vuelve me gustaría utilizar los mismos datos que previamente devuelto por la respuesta POST. Sé que puedo usar ORM y persistir mu objetos etc, sólo parece que sería mucho más fácil decir retrofit para utilizar la misma respuesta.
- ¿Por qué se definen los métodos del ciclo de vida en la clase de actividad con el especificador de acceso protegido
- ¿Cómo auto tamaño textview dinámicamente de acuerdo a la longitud del texto en android?