ios - Alamofire:无论 timoutIntervalForRequest 如何,1 秒内为 'The request timed out'

标签 ios swift alamofire

我试图在我的应用程序中使用 Alamofire,但在第一个请求中遇到了以下问题(我使用 URLSession 成功完成了)。

执行请求时,在 1-2 秒内我在日志中看到 -1001 The request timed out,尽管我为 session 设置了相对较长的间隔。

这是 HttpSession 自动取款机:

class HttpSession {

    static let instance = HttpSession()
    let sessionManager: SessionManager?

    private init() {
        let conf = URLSessionConfiguration.default
        conf.timeoutIntervalForRequest = 30
        sessionManager = Alamofire.SessionManager(configuration: conf)
    }
}

我在这里提出要求:

HttpSession.instance.sessionManager!.request(url, method: .get, parameters: [:], encoding: JSONEncoding.default, headers: headers).responseJSON { response in
    switch response.result {
    case .success:
        print("YAA!")
        break
    case .failure(let error):
        print(error)
        break
    }
}

值得一提的是:当我尝试打印前后时间以查看时差时,值确实相差 30 秒,但在现实生活中需要 1-2 秒。我只在模拟器上测试过它。 为了打印秒数,我在请求之前和响应中使用了以下代码片段两次:

let date: Date = Date()
print(Calendar.current.component(.second, from: date))

任何帮助将不胜感激,谢谢。

最佳答案

如果你检查 NSURLSessionConfiguration 源代码,你会发现这些注释:

/* default timeout for requests. This will cause a timeout if no data is transmitted for the given timeout value, and is reset whenever data is transmitted. */ public var timeoutIntervalForRequest: NSTimeInterval

/* default timeout for requests. This will cause a timeout if a resource is not able to be retrieved within a given timeout. */
public var timeoutIntervalForResource: NSTimeInterval

你还需要设置这个值:

conf.timeoutIntervalForResource = 30

关于ios - Alamofire:无论 timoutIntervalForRequest 如何,1 秒内为 'The request timed out',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40963841/

相关文章:

ios - 如何使用 Swift 将对象添加到异步完成 block 中特定索引处的数组

ios - 在推送动画期间在输入附件 View 中显示文本的奇怪延迟。

swift - Alamofire 多次请求迭代

json - API 可以不理解我的属性类型吗?

ios - 什么是 "Faulting"行为?

objective-c - 如何在 iPhone 注册页面的文本字段中默认显示电话号码?

ios - XLForm formRowDescriptorValueHasChanged 不工作

ios - 如何对齐水平 UIStackView 中两个标签的底部?

ios - SceneKit 不会在 Xcode 12 中填满屏幕

ios - 使用单独的类在 Swift 中处理 Alamofire 对 TableView 的响应的最佳方法是什么?