java缓存标准GET请求吗?

时间:2016-01-19 20:37:09

标签: java apache-httpclient-4.x

所以我编写了一个程序,我正在运行无数个GET请求,以从远程服务器检索json文件。更改json文件时程序完成。我正在运行该程序的两个实例。我的问题是一个程序检测到文件更改,而另一个程序仍然没有检测到文件更改。

json文件很简单,

  

{"状态":"完整"}

  

{"状态":"不完全"}

基本的伪代码是,

  while(status == "incomplete") {
      HttpGet httpget = new HttpGet(
      "http://www.website.com/file.json");
      HttpResponse response = httpClient.execute(httpget);
      ...
  }

2 个答案:

答案 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请求标头,尽可能使用原点自动验证过时缓存条目。