用于脱机HTTP POST请求的iOS存储转发框架

时间:2013-04-20 05:09:43

标签: ios http nsurlrequest

有没有办法(可能是库?)在用户离线时存储HTTP POST请求,然后在用户重新联机时发送POST请求?

(我不需要阅读服务器的响应,除非我想在POST请求失败时重新排队请求。)

4 个答案:

答案 0 :(得分:1)

是的,有这样一个图书馆:

http://blog.mugunthkumar.com/products/ios-framework-introducing-mknetworkkit/

它可以抵御您的应用的退出和重新启动,并会继续尝试发送您的请求,直到出现持续故障(例如服务器关闭,而不是网络关闭)

答案 1 :(得分:0)

  

是否存在存储HTTP POST请求的方法(可能是库?)   当用户离线时,然后在发送POST请求时   用户重新上线?

我认为最好的办法是存储每个请求所需的信息,而不是自己存储请求。如果在可归档对象中包装每个请求的数据,则可以将这些对象添加到要发送的队列中。这样,如果应用程序关闭,您可以将整个队列(您可以使用队列的可变数组)归档到文件,并在再次启动时将其读回。将队列用作单独操作的输入,该操作除了从队列中获取对象并在设备联机时发送相应的请求时不执行任何操作。

答案 2 :(得分:0)

在iOS 7中,NSURLSession可以做到。它甚至可以在应用程序停止运行时在后台运行请求。

答案 3 :(得分:0)

这里的派对已经很晚了,但是我为我们的内部应用程序编写了一个pod,它几乎就是这个 - https://cocoapods.org/pods/OfflineRequestManager。实际的网络请求仍然由符合OfflineRequest协议的任何内容处理,但是pod提供了一种简单的方法来排队请求,并确保它们一直尝试执行,直到它们成功,包括保存到磁盘。

最简单的用例看起来如下所示,尽管大多数实际情况(保存到磁盘,特定请求数据等)都会有更多的环节要跳过:

while ($row_DatosConsulta = $Result->fetchArray(SQLITE3_ASSOC)) {
    comprobe($row_DatosConsulta['strCod']);
    // do other  stuff here
}