本文介绍了在 Alamofire 中设置超时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是 Alamofire 4.0.1 并且我想为我的请求设置超时.我尝试了这个问题中给出的解决方案:

I am using Alamofire 4.0.1 and I want to set a timeout for my request. I tried the solutions gived in this question:

在第一种情况,它抛出一个NSURLErrorDomain(超时设置正确):

In the first case, it throws a NSURLErrorDomain (timeout is set correctly):

let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 10

    let sessionManager = Alamofire.SessionManager(configuration: configuration)
    sessionManager.request("yourUrl", method: .post, parameters: ["parameterKey": "value"])
            .responseJSON {
                response in
                switch (response.result) {
                case .success:
                    //do json stuff
                    break
                case .failure(let error):
                    if error._code == NSURLErrorTimedOut {
                        //timeout here
                    }
                    print("

Auth request failed with error:
 (error)")
                    break
                }
            }

第二种情况,超时没有被替换,仍然设置为60秒.

In the second case, the time out is not replaced and still set as 60 seconds.

let manager = Alamofire.SessionManager.default
manager.session.configuration.timeoutIntervalForRequest = 10

manager.request("yourUrl", method: .post, parameters: ["parameterKey": "value"])

我在 ios 10.1 中运行

我的代码:(它不起作用)

    let configuration = URLSessionConfiguration.default
    configuration.timeoutIntervalForRequest = 10 // seconds
    configuration.timeoutIntervalForResource = 10
    let alamoFireManager = Alamofire.SessionManager(configuration: configuration)

    alamoFireManager.request("my_url", method: .post, parameters: parameters).responseJSON { response in


        switch (response.result) {
        case .success:
                 //Success....
            break
        case .failure(let error):
            // failure...
            break
        }
    }

解决了 Alamofire github 线程: Alamofire 4.3.0设置超时抛出 NSURLErrorDomain 错误 #1931

推荐答案

基于@kamal-thakur 的回复.

Based in @kamal-thakur response.

Swift 3:

var request = URLRequest(url: NSURL.init(string: "YOUR_URL") as! URL)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.timeoutInterval = 10 // 10 secs
let postString = "param1=(var1)&param2=(var2)"
request.httpBody = postString.data(using: .utf8)
Alamofire.request(request).responseJSON {
    response in
    // do whatever you want here
}

这篇关于在 Alamofire 中设置超时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 23:22