我正在项目中使用Android Volley Networking库。
当我自己将“if-None-Match”与etag添加到标题时我没有得到304,因为Volley还添加了“If-Modified-Since”。缓存的响应在标题中没有“Last-Modified”。
当Volley发送“If-Modified-Since”时,如果缓存的请求没有“Last-Modified”?
答案 0 :(得分:4)
tl;博士:不,我不相信Volley应该发送If-Modified-Since
作为其请求的一部分,至少不是它目前的做法。< / p>
更长的回答:
Volley正在使用上一个回复here和here中的If-Modified-Since
标头设置Date
标头。
看起来有一个patch here可以修复凌空,使其行为更合适(即使用Last-Modified
响应标头)。
此后两个请求都会产生Volley / Android的200个回复:
Request 1
If-None-Match: "cd090c6cb990a25585f1748d85d764bd"
If-Modified-Since: Tue, 16 Dec 2014 14:21:13 GMT+00:00
Response 1
ETag: "cd090c6cb990a25585f1748d85d764bd"
Date: Tue, 16 Dec 2014 14:21:29 GMT
Request 2
If-None-Match: "cd090c6cb990a25585f1748d85d764bd"
If-Modified-Since: Tue, 16 Dec 2014 14:21:29 GMT+00:00
Response 2
ETag: "cd090c6cb990a25585f1748d85d764bd"
Date: Tue, 16 Dec 2014 14:23:31 GMT
回复中没有包含Last-Modified
标题,因此http客户端没有If-Modified-Since
的适当值...但Volley向If-Modified-Since
发送日期来自先前回复的价值。