J'utilise OkHttpClient (v3.0.1) qui est dans ma demande, mais ETag etComment utiliser ETag de OkHttp et If-None-Match sur Android
If-None-Match ne fonctionnent pas, par exemple:.
Première GET http://112.4.19.67/task/imags_avatar/20130607165126605.png
En réponse, je reçois ETag et Last-Modified.
Demande:
GET /task/imags_avatar/20130607165126605.png HTTP/1.1
Host: 112.4.19.67
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.0.1
Réponse:
HTTP/1.1 200 OK
Server: Apache
Last-Modified: Mon, 30 Jun 2014 04:44:43 GMT
ETag: "1205-4fd06515d9572"
Content-Type: image/png
Content-Length: 4613
Accept-Ranges: bytes
Date: Thu, 04 Feb 2016 13:30:05 GMT
X-Varnish: 3684240013 3683622711
Age: 1313
Via: 1.1 varnish
Connection: keep-alive
Deuxième obtenir la même URL: http://112.4.19.67/task/imags_avatar/20130607165126605.png
Je pense que je pouvais voir le If-None-Match demande. mais ça n'existe pas.
Demande:
GET /task/imags_avatar/20130607165126605.png HTTP/1.1
Host: 112.4.19.67
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.0.1
Réponse:
HTTP/1.1 200 OK
Server: Apache
Last-Modified: Mon, 30 Jun 2014 04:44:43 GMT
ETag: "1205-4fd06515504c0"
Content-Type: image/png
Content-Length: 4613
Accept-Ranges: bytes
Date: Thu, 04 Feb 2016 13:30:26 GMT
X-Varnish: 3389168698 3388862573
Age: 642
Via: 1.1 varnish
Connection: keep-alive
Mon code
File file = getCacheDir();
Cache cache = new Cache(file, CACHE_SIZE);
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.cache(cache);
OkHttpClient client = builder.build();
Request request = new Request.Builder()
.url(url)
.build();
Merci à l'avance pour toute aide.
Votre code semble bien. Essayez de renifler la requête avec les paramètres de proxy en utilisant un logiciel comme mitmproxy ou charlesproxy car retroger logcat n'imprime pas l'en-tête if-none-match bien que okhttp ajoute déjà l'en-tête. Une autre chose est la retrofit imprime le code d'état 304 comme 200. – baskara