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它起作用

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
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章