Alamofire 超时在 Swift 3 中不起作用



我正在使用Alamofire进行网络请求,并希望添加超时。但是Alamofire的功能不起作用。编写以下代码时没有任何反应

let manager = Alamofire.SessionManager.default
    manager.session.configuration.timeoutIntervalForRequest = 1 // not working, 20 secs normally (1 just for try)
    manager.request(url, method: method, parameters: params)
        .responseJSON { response in
            print(response)
            ...

当我尝试在没有 Alamofire 的情况下进行网络请求时,超时工作成功。但还有其他错误。

var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "post"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.timeoutInterval = 1 // 20 secs normally (1 just for try)
request.httpBody = try! JSONSerialization.data(withJSONObject: params!)
...    

那么,如何在 Swift 3 中添加 Alamofire 超时呢?

最后我找到了这个答案的解决方案:https://stackoverflow.com/a/44948686/7825024

当我添加函数时,此配置代码不起作用,但当我将其添加到 AppDelegate 时它有效

应用委托.swift

import UIKit
var AFManager = SessionManager()
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        let configuration = URLSessionConfiguration.default
        configuration.timeoutIntervalForRequest = 5 // seconds
        configuration.timeoutIntervalForResource = 5 //seconds
        AFManager = Alamofire.SessionManager(configuration: configuration)
        return true
    }
    ...
}

例:

AFManager.request("yourURL", method: .post, parameters: parameters).responseJSON { response in
    ...
}
在将

URLSessionConfiguration添加到URLSession后,您无法修改其值,因此尝试操作Alamofire.SesssionManager.default.session.configuration将始终失败。要正确更改配置值,请按照 Alamofire 文档实例化您自己的SessionManager。例如:

var defaultHeaders = Alamofire.SessionManager.defaultHTTPHeaders
defaultHeaders["DNT"] = "1 (Do Not Track Enabled)"
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = defaultHeaders
let sessionManager = Alamofire.SessionManager(configuration: configuration)

相关内容

  • 没有找到相关文章

最新更新