swift - 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)
解决方案
您只需将 url 请求的超时间隔设置为您想要的值。
request.timeoutInterval = 30
推荐阅读
- .net-core - Blazor 服务器超时
- javascript - 如何检查json对象中是否存在变量
- sql - 导致“SQL 错误 [IX000]:在日期时间或间隔操作上发生溢出”的原因。我该如何解决?
- google-bigquery - BI Engine 模式不完整,原因是内部错误
- laravel - zapier basics AUTH 连接到我的 Laravel 应用程序时失败(caltweets)
- pyspark - PySpark - 努力按特定格式排列数据
- html - React Native:如何在一个圆圈中跨越文本中的字母
- database - 在 PLSQL 中自动获取上个月的日期
- javascript - Electron Create React App在构建后未加载
- drools - Drools 4.X 与 Drools 7.x 的性能对比