0

我目前正在尝试减少我的 iOS 应用程序中每个 Alamofire 远程调用的默认值,因为timeoutIntervalForRequest我不希望它分别等待 60 秒和 7 天。timeoutIntervalForResourceNSURLSessionConfiguration

这是我的代码:

Alamofire.Manager.sharedInstance.session.configuration.timeoutIntervalForRequest = 30
Alamofire.Manager.sharedInstance.session.configuration.timeoutIntervalForResource = 30

let parameters = [
    "foo": [1,2,3],
    "bar": [
        "baz": "qux"
    ]
]

Alamofire.Manager.sharedInstance.request(.POST, "someURL", parameters: parameters, encoding: .JSON) {
    (response) in

    print(response.timeline)
}

这是我的日志:

Timeline: { "Latency": 60.977 secs, "Request Duration": 60.977 secs, "Serialization Duration": 0.000 secs, "Total Duration": 60.977 secs }

如您所见,该Request Duration值超过 30 秒。

这是否取决于我使用Alamofire.Manager.sharedInstance.request而不是的事实Alamofire.request

4

2 回答 2

1

我很确定这是因为您无法更改默认 Manager 的配置(或者至少我认为您不能更改,可能是一个错误)。

尝试创建一个新实例并添加自定义的 NSURLSessionConfiguration。

前任:

var manager:Alamofire.Manager?

func initManager(timeoutInterval:Double) {
    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()

    configuration.timeoutIntervalForRequest = timeoutInterval
    configuration.timeoutIntervalForResource = timeoutInterval

    manager = Alamofire.Manager(configuration: configuration)
}

// then use manager!.request to do your request
于 2016-07-05T14:51:41.587 回答
0

我在官方 Alamofire GitHub 页面上打开了一个问题,这是他们对此的看法:

更改已处于活动状态的会话中的配置值无效。根据Apple的文档NSURLSessionChanging mutable values within the configuration object has no effect on the current session, but you can create a new session with the modified configuration object.

我建议您根据我们的文档创建您的管理器实例并自定义其配置。

于 2016-07-21T09:46:53.070 回答