首页 > 解决方案 > Alamofire - 如果没有响应,则添加超时

问题描述

我有一个使用 Alamofire 的 JSON 调用,它运行良好,除非服务器上的查询没有响应。如果端点超时,那么 Alamofire 确实会给出超时错误,但最近端点正在工作,但服务器上的 MSSQL 没有响应。在这种情况下,SVProgress 只会旋转并等待服务器返回响应并且不会超时。

如何在下面的代码中添加超时,以便如果服务器在 x 秒后没有响应,我会收到错误消息?

我正在使用 Swift 5。

SVProgressHUD.show()
let apiEndpoint: String = "https://intelipos.dynalias.net/iocserver/MobileApp.aspx?action=MobileApp"
let headers = HTTPHeaders(["Content-Type" : "application/json","WebSiteAppID":self.webSiteAppID])
var param = [String: Any?]()
param["Command"] = "GetSales"
let keychain = KeychainSwift()
let sessionID = keychain.get("adminSessionID")!.base64Decoded()!
let strParam = jsonToString(json: ["SessionID":sessionID])
param["Data"] = strParam?.base64Encoded()
param["Signature"] = strParam?.base64Encoded()?.sha256Signature()

let request =  AF.request(URL(string: apiEndpoint)!, method: .post, parameters: param as Parameters, encoding: JSONEncoding.default, headers: headers)

标签: swiftxcode

解决方案


您只需将 url 请求的超时间隔设置为您想要的值。

request.timeoutInterval = 30

推荐阅读