如何避免丢失邮政请求数据

问题描述 投票:1回答:1

有时候,当我发布一些数据,如果连接被关闭或有一个问题,我失去了数据,这不是很好,我正在寻找一种方法来保存数据在后台或类似的东西,它会自动发送时,有一个连接,在同一时间等待我必须能够使用的应用程序,任何想法?

  Post PostContact = new Post();
  json = PostContact.ContactJson(id_device1,id_device2);
  response = PostContact.post("url", json);
java android post okhttp
1个回答
0
投票

HTTP请求的功能如下

客户提出要求

服务器回复回复

他们并不关心中间发生的事情。这意味着,一旦客户端完成了请求之后就像一个黑匣子。如果在你的请求来的时候服务器的连接中断了,数据就会被破坏,由于没有双向通信,客户端就不知道要重新发送请求。

最好的选择是创建一个事务。

客户端为请求创建一个唯一的事务ID,并将其附加到Rest调用上

服务器收到请求后,检查事务日志,查看之前是否有相同ID的调用。

如果是一个新的事务,服务器将这个事务ID存储在一个状态为 "pending "的日志中。然后服务器处理该请求。服务器将事务日志状态更新为'已处理'。然后服务器将响应发送给客户端,并将响应存储在事务日志中。

如果是旧的交易,服务器重新发送响应给客户端。

客户端收到响应,客户端向服务器发送交易完成信号。

服务器删除更新交易日志为'已完成'。

第5步失败,客户端可以用相同的交易id重新发送请求,不会有重复记录的风险。

© www.soinside.com 2019 - 2024. All rights reserved.