改造 - 不同设备上的不同API响应

时间:2018-01-31 12:53:45

标签: java php android retrofit postman

问题与以下完全相同 我有一个api可以提供一些数据和一个apk,

我用我的设备获得了api响应,并在模拟器上使用相同的apk获得了另一个不同的旧响应!

模拟器响应是最新的更新,而其他不同的响应在更改之前。

该应用程序使用改造而不进行缓存。 那可能是什么问题?

请求只包含一个标头(访问令牌) 响应包含像(ETag,Access-Control-Max-Age)这样的标题,但是由于根本没有缓存,因此改版不应该处理它们。

邮递员的屏幕截图:enter image description here

等待一段时间所有设备都变得最新!

3 个答案:

答案 0 :(得分:2)

你确定吗?

  

该应用程序使用改造而不缓存

基于此https://github.com/square/retrofit/issues/678,我认为改造(OkHttp内部改造)缓存您的查询。

您可以通过两种方式更改此行为:

  • 将?_t = TIMESTAMP添加到您的应用查询网址
  • 从服务器响应中删除“Access-Control-Max-Age”标头

答案 1 :(得分:1)

或者您可以创建新的OkHttp客户端来进行改造并编写类似的内容:

new OkHttpClient.Builder().cache(null).build();

Request.cacheControl(CacheControl.FORCE_NETWORK)

答案 2 :(得分:0)

  

那可能是什么问题?

如果你没有在客户端上发现问题,你应该在服务器端寻找它。任何类型的缓存(在数据库上,或在HTTP响应级别上)都可以显示此行为。

如果不了解您的设置和测试环境,就无法确定问题所在。你写了

  

等待一段时间所有设备都是最新的

这是什么意思?如果您的设备是最新的,您如何确定?

在复杂的情况下,如果涉及到后端,您应该在Github上提供一个示例项目,可以重现此行为。