我正在使用iOS 7的新NSURLSessionDataTask
来检索数据,如下所示:
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:
request completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
//
}];
如何增加超时值以避免错误"The request timed out"
(在NSURLErrorDomain
代码= -1001
中)?
我已查看NSURLSessionConfiguration的文档,但未找到设置超时值的方法。
感谢您的帮助!
答案 0 :(得分:94)
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.timeoutIntervalForRequest = 30.0;
sessionConfig.timeoutIntervalForResource = 60.0;
let sessionConfig = URLSessionConfiguration.default
sessionConfig.timeoutIntervalForRequest = 30.0
sessionConfig.timeoutIntervalForResource = 60.0
let session = URLSession(configuration: sessionConfig)
timeoutIntervalForRequest
和timeoutIntervalForResource
指定请求的超时间隔以及资源。
timeoutIntervalForRequest
- 等待时使用的超时间隔 用于其他数据。与此值关联的计时器将重置 每当新数据到达时。当请求计时器到达时 指定的间隔没有接收任何新数据,它触发一个 超时。
timeoutIntervalForResource
- a的最长时间 应该允许资源请求。该值控制如何 在放弃之前等待整个资源的转移。该 资源计时器在启动请求时启动并计数直到 请求完成或达到此超时间隔, 以先到者为准。
答案 1 :(得分:16)
如果Swift开发者来到这里
要执行此操作,您需要使用
let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
urlconfig.timeoutIntervalForRequest = 12
urlconfig.timeoutIntervalForResource = 12
self.session = NSURLSession(configuration: urlconfig, delegate: self.delegates, delegateQueue: nil)
答案 2 :(得分:8)
在swift 3.超时15秒。
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = TimeInterval(15)
configuration.timeoutIntervalForResource = TimeInterval(15)
let session = URLSession(configuration: configuration)
答案 3 :(得分:4)
NSURLSessionConfiguration包含属性timeoutIntervalForRequest:
@property NSTimeInterval timeoutIntervalForRequest
控制超时间隔。启动请求后,还有超时的timeoutIntervalForResource。
答案 4 :(得分:2)
在SWIFT 3.0中,您需要使用
java -Dpackage="myPackage" -jar ....
答案 5 :(得分:1)
对于Swift 4:
let config = URLSessionConfiguration.default
config.timeoutIntervalForRequest = TimeInterval(15)
config.timeoutIntervalForResource = TimeInterval(15)
let urlSession = URLSession(configuration: config)
timeoutIntervalForRequest适用于基于此配置的会话中的所有任务。 timeoutIntervalForResource适用于基于此配置的会话中的所有任务。
答案 6 :(得分:0)
就我而言,我正在增加错误的课程的超时时间。我的超时错误是通过增加 URLRequest 而不是 URLSession
的超时解决的var request = URLRequest(url: url)
request.timeoutInterval = 30