一尘不染

NSURLSession:如何增加URL请求的超时时间?

swift

我正在使用iOS 7的新版NSURLSessionDataTask本来检索数据,如下所示:

NSURLSession *session = [NSURLSession sharedSession];

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:
request completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
//
}];

如何增加超时值以避免错误"The request timed out"(在 NSURLErrorDomainCode =中-1001)?

我已经检查了NSURLSessionConfiguration的文档,但是没有找到设置超时值的方法。

谢谢您的帮助!


阅读 877

收藏
2020-07-07

共1个答案

一尘不染

对象

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)

文档怎么说

timeoutIntervalForRequesttimeoutIntervalForResource指定请求和资源的超时间隔。

timeoutIntervalForRequest
-等待其他数据时使用的超时间隔。每当有新数据到达时,与该值关联的计时器就会重置。当请求计时器达到指定的间隔但未接收到任何新数据时,它将触发超时。

timeoutIntervalForResource
-资源请求应允许的最长时间。该值控制放弃之前等待整个资源传输的时间。资源计时器在发起请求时启动,并计数直到请求完成或达到此超时间隔(以先到者为准)。

基于NSURLSessionConfiguration类的参考

2020-07-07