【发布时间】:2017-04-28 17:25:17
【问题描述】:
使用相同的 url 和不同的接受标头发出请求会返回来自 okhttp 缓存的先前响应。
这意味着第一个请求是针对 application/json 数据,第二个请求是 application/xml。因此,客户端从缓存中返回 json 数据,而不是在上游执行 xml。
例如 GET 请求:http://example.com 带有标头 application/json 返回 Cache-Control 标头和 json 有效负载。 响应被缓存在内部 http 缓存中。 第二个请求是在缓存控制窗口中向http://example.com 发出的,带有标头 application/xml。在这种情况下,Okhttp 从缓存中返回相同的 json 有效负载,而不是 xml 有效负载。
Builder builder = new Builder().url("https://httpbin.org/headers").header("accept", header);
有人遇到过这个问题吗?
【问题讨论】:
-
也许给我们展示一小段代码及其输出,证明问题?
-
gist.github.com/gpor89/c69c795b334af5ff63cef6468222a01e 但该资源的测试通过了,因为该站点不返回缓存标头。
-
不是重点。问题应该是独立的。你不需要整个代码,只要人们可以看到你在做什么——并显示你的输出就足够了。