NSURLSession timeout



我有一个函数,我在其中请求获得JSON

let request = NSMutableURLRequest(URL: NSURL(string: path)!)
let session = NSURLSession.sharedSession()
session.configuration.timeoutIntervalForRequest = 5
session.configuration.timeoutIntervalForResource = 5
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
     let json:JSON = JSON(data: data!)
     onCompletion(json, error)
})
task.resume()

这是有效的,但我对超时有问题。如果请求耗时超过5秒,我想取消操作。有什么办法吗?

调用可能需要5秒钟以上的时间,但它仍然会触发,超时也不会起任何作用。如果超时被触发,我需要做什么吗?

更新

        let request = NSMutableURLRequest(URL: NSURL(string: path)!)
        let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
        urlconfig.timeoutIntervalForRequest = 5
        urlconfig.timeoutIntervalForResource = 5
        let session = NSURLSession(configuration: urlconfig, delegate: self, delegateQueue: nil)
        let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
            let json:JSON = JSON(data: data!)
            onCompletion(json, error)
        })
        task.resume()

您不能更改sharedSession或会话configuration属性的超时。您必须在创建会话时设置超时。有关如何创建会话及其超时的示例,请参见以下内容:https://stackoverflow.com/a/30427187/78496

相关内容

  • 没有找到相关文章

最新更新