【问题标题】:https api response is getting cached with apache httpclienthttps api 响应被 apache httpclient 缓存
【发布时间】:2014-08-11 09:31:17
【问题描述】:

我正在使用 Apache HTTPClient 进行远程 API 调用。此过程通过 cron 运行。 由于某种原因,API 响应被缓存。当我从其他客户端进行相同的 API 调用时,它会显示最新数据。但是,当进程(由 cron 唤醒)进行此调用时,它正在获取缓存响应(不是最新数据)。

这里会发生什么?

【问题讨论】:

    标签: java caching cron httpclient


    【解决方案1】:

    httpclient 中没有缓存。因为你总是通过 cron 运行一个新的 Java VM,所以一切都是新鲜的。

    请检查您没有将任何可能导致问题的中间代理与 httpclient 一起使用。可以通过 -Dhttp.proxyHost=... 和 -Dhttp.proxyPort=.... 配置代理。

    其次,由于您发送的请求不同,您可能会得到另一个结果。不是 URL 本身可能不同,而是标题不同!

    尝试设置可能触发不同行为的标题,例如:

    HttpGet g = ....
    g.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
    g.setHeader("Pragma", "no-cache"); // HTTP 1.0
    g.setHeader("X-Requested-With", "XMLHttpRequest"); // mimics a browser REST request
    

    还尝试启用 org.apache.http.headers 日志记录目标,并比较 REST 客户端和 apache http 客户端库发送的标头。

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 2013-09-05
      • 2011-07-09
      相关资源
      最近更新 更多