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

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

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

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

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

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

邮递员截屏: 在此处输入图像描述

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

你确定这个吗?

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

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

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

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

或者你可以创建新的OkHttp客户端来改进和编写类似的东西:

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

要么

 Request.cacheControl(CacheControl.FORCE_NETWORK) 

那可能是什么问题呢?

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

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

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

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

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