Swift Alamofire 检查等待超时并放置错误

Posted

技术标签:

【中文标题】Swift Alamofire 检查等待超时并放置错误【英文标题】:Swift Alamofire check wait timeout and put error 【发布时间】:2016-10-05 10:39:12 【问题描述】:

我使用 Alamofire 从 REST api 获取数据。

                Alamofire.request(.GET, url)
                .authenticate(user: user, password: password)
                .responseString  response in
                    if (response.result.error != nil)
                    
                        show_error()
                    
                
                .response  (request, response, data, error) in ...

如果用户没有互联网连接,我会收到并输入错误。如果用户在请求后等待超过 3 秒的响应,我想提出错误。

我是怎么做到的?如何在 Alamofire 中使用超时?

【问题讨论】:

【参考方案1】:
Alamofire.SessionManager.default.session.configuration.timeoutIntervalForRequest = 3000

这适用于所有请求。如果您只想为一个特定请求设置超时:

let sessionManager = Alamofire.SessionManager.default
sessionManager.configuration.timeoutIntervalForRequest = 3000
sessionManager.request(.GET, url)
            .authenticate(user: user, password: password)
            .responseString  response in
                if (response.result.error != nil)
                
                    show_error()
                
            
            .response  (request, response, data, error) in ...

您可以在README 文件中找到有关会话管理器的更多信息...

【讨论】:

适用于 Alamofire 4.0,但我使用 3.0 For Alamofire 3.0:Alamofire.Manager.sharedInstance.session.configuration.timeoutIntervalForRequest = 300 请告诉我,我需要在哪里输入代码?我想如果超时超过 3 秒来执行此功能:show_error() 那么超时肯定会出错。因此,您可以像处理任何其他错误一样处理它。 我需要在哪里添加此代码?我在 viewDidLoad 中添加了它,但它对我不起作用。

以上是关于Swift Alamofire 检查等待超时并放置错误的主要内容,如果未能解决你的问题,请参考以下文章

每两个请求之一中的 Swift Alamofire “请求超时”

swift 2.1 alamofire 超时方法

为啥没有网络连接时 Alamofire 需要这么长时间才能超时?

Swift 3 的 ObjectMapper 和 Alamofire 问题 Alamofire 4 的 Alamofire 版本

Alamofire 超时不工作

如何在alamofire中设置请求超时?