如果连接不可用,则为服务请求的iOS重试机制

如果连接不可用,则为服务请求的iOS重试机制,第1张

概述我有一个场景,我需要向服务器发送请求,这是一个更简单的事情,当我们在请求时有互联网连接. 但我需要编写一个重试机制,如果当前互联网连接不可用,当互联网连接回来时,我们应该重新发送请求到服务器. 如何在iOS中实现相同的功能,在Android的情况下非常容易和不同的方式可行. iOS开发的新手,所以任何一个例子都会有很大的帮助. 我正在使用目标C. 如果你使用 Alamofire,那么它们是Requ 我有一个场景,我需要向服务器发送请求,这是一个更简单的事情,当我们在请求时有互联网连接.

但我需要编写一个重试机制,如果当前互联网连接不可用,当互联网连接回来时,我们应该重新发送请求到服务器.
如何在iOS中实现相同的功能,在Android的情况下非常容易和不同的方式可行.
iOS开发的新手,所以任何一个例子都会有很大的帮助.

我正在使用目标C.

解决方法 如果你使用 Alamofire,那么它们是RequestRetrIEr协议,它允许你重试网络请求( documentation link)

class RetryHandler: RequestAdapter,RequestRetrIEr {    public func should(_ manager: SessionManager,retry request: Request,with error: Error,completion: RequestRetryCompletion) {        if let response = request.task.response as? httpURLResponse,response.statusCode == 401 {            completion(true,1.0) // retry after 1 second        } else {            completion(false,0.0) // don't retry        }    }}let sessionManager = SessionManager()sessionManager.retrIEr = RetryHandler()sessionManager.request(urlString).responseJsON { response in    deBUGPrint(response)}

如果您正在使用URLSession,那么在iOS 11中,apple添加了waitsForConnectivity标志,等待网络连接可用,然后再尝试连接

let configuration = URLSessionConfiguration.defaultconfiguration.timeoutIntervalForRequest = 120configuration.timeoutIntervalForResource = 120if #available(iOS 11,*) {  configuration.waitsForConnectivity = true}let session = URLSession(configuration: configuration)

注意:会话仅在尝试初始连接时等待.如果网络在建立连接后丢失,则会像iOS 10一样通过完成处理程序或会话委托返回错误.它需要多长时间取决于资源timeoutIntervalForResource

或者最后,您可以使用Reachability检测网络更改并再次重试网络请求.

总结

以上是内存溢出为你收集整理的如果连接不可用,则为服务请求的iOS重试机制全部内容,希望文章能够帮你解决如果连接不可用,则为服务请求的iOS重试机制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1063553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存