所以我编写了一个程序,我正在运行无数个GET请求,以从远程服务器检索json文件。更改json文件时程序完成。我正在运行该程序的两个实例。我的问题是一个程序检测到文件更改,而另一个程序仍然没有检测到文件更改。
json文件很简单,
{"状态":"完整"}
和
{"状态":"不完全"}
基本的伪代码是,
while(status == "incomplete") {
HttpGet httpget = new HttpGet(
"http://www.website.com/file.json");
HttpResponse response = httpClient.execute(httpget);
...
}
答案 0 :(得分:0)
您可以尝试通过设置以下参数在服务器端设置缓存:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0"); //
答案 1 :(得分:0)
Apache HttpClient
4.5支持缓存,但默认客户端不缓存,请参阅HTTP Caching:
HttpClient Cache提供了一个与HttpClient一起使用的HTTP / 1.1兼容缓存层 - 与浏览器缓存相当的Java。实现遵循Chain of Responsibility设计模式,其中缓存HttpClient实现可以为默认的非缓存HttpClient实现提供替代;完全可以从缓存中满足的请求不会导致实际的原始请求。使用条件GET和If-Modified-Since和/或If-None-Match请求标头,尽可能使用原点自动验证过时缓存条目。