Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 改装-不同设备上的不同API响应_Java_Php_Android_Retrofit_Postman - Fatal编程技术网

Java 改装-不同设备上的不同API响应

Java 改装-不同设备上的不同API响应,java,php,android,retrofit,postman,Java,Php,Android,Retrofit,Postman,这个问题和下面的完全一样 我有一个api可以提供一些数据和一个apk 我用我的设备得到了我的api响应,用相同的apk在模拟器上得到了另一个不同的旧响应 emulator响应是最新的更改,而其他不同的响应是在更改之前 该应用程序使用不带缓存的改装。 那么问题出在哪里呢 请求仅包含一个标头(访问令牌) 响应包含诸如(ETag,Access Control Max Age)之类的标题,但改型不应该处理它们,因为根本没有缓存 邮差截图: 另外,在等待一段时间后,所有设备都会变得最新 你确定吗 该应用程

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

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

emulator响应是最新的更改,而其他不同的响应是在更改之前

该应用程序使用不带缓存的改装。 那么问题出在哪里呢

请求仅包含一个标头(访问令牌) 响应包含诸如(ETag,Access Control Max Age)之类的标题,但改型不应该处理它们,因为根本没有缓存

邮差截图:


另外,在等待一段时间后,所有设备都会变得最新

你确定吗

该应用程序使用不带缓存的改装

基于此,我认为Reformation(OkHttp inside Reformation)可以缓存您的查询

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

  • 将?\u t=时间戳添加到应用程序查询url中
  • 从服务器响应中删除“访问控制最大年龄”标题

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

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

那么问题出在哪里呢

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

如果不进一步了解设置和测试环境,就不可能找出问题所在。你写

另外,在等待一段时间后,所有设备都会变得最新

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


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

您应该检查两个客户端之间的HTTP请求内容,主要检查HTTP头。正如sakiM所说,共享您的请求和头。@sakiM只有一个头(访问令牌)对于已发送的请求,响应包含(ETag,Access Control Max Age)等标题,但应用程序不应处理这些标题,因为根本没有缓存,所以问题出在哪里?@azizbekian请检查添加的标题请使用例如验证您收到了预期的响应。感谢您的帮助,但是我已经使用了第一个解决方案和空缓存对象,第二个解决方案给了我相同的结果。很高兴听到我可以帮助你)谢谢你的帮助,但是添加?\u t=TIMESTAMP不起作用,我将尝试第二个选项并返回
Request.cacheControl(CacheControl.FORCE_NETWORK)