2016-02-05 4 views
3

Я использую OkHttpClient (v3.0.1), которая находится в моем приложении, но ETag и If-None-Match не работаютКак использовать ETag OkHttp, и если-None-Match на андроид

Например:.

Первый GET http://112.4.19.67/task/imags_avatar/20130607165126605.png

В ответ я получаю ETag и Last-Modified.

Запрос:

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 

Ответ:

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 

Второй GET один и тот же URL: http://112.4.19.67/task/imags_avatar/20130607165126605.png

Я думаю, что я мог видеть If-None-Match в запрос. но этого не существует.

Запрос:

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 

Ответ:

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 

Мой код

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(); 

Заранее спасибо за любую помощь.

+0

Ваш код кажется прекрасным. Попытайтесь понюхать запрос с настройками прокси с помощью программного обеспечения, такого как mitmproxy или charlesproxy, потому что модифицированный logcat не печатает заголовок if-none-match, хотя okhttp уже добавляет заголовок. Другое дело, что дооснастка печатает код статуса 304 как 200. – baskara

ответ

0

Вы читаете полное тело ответа с первого запроса? OkHttp не записывает ответ в кеш, пока вы не закончите чтение тела.

Смежные вопросы