我正在使用Apache HTTPClient进行远程API调用。此过程通过cron运行。 由于某些原因,API响应正在缓存。当我从rest客户端进行相同的API调用时,它会显示最新数据。但是,当进程(由cron唤醒)进行此调用时,它将获得缓存响应(而不是最新数据)。
这里可能发生什么?
答案 0 :(得分:2)
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客户端库发送的标头。