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

问题描述 投票:59回答:7

我使用的是iOS 7的新NSURLSessionDataTask如下检索数据:

NSURLSession *session = [NSURLSession sharedSession];

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

我怎样才能提高超时值,以避免错误qazxsw POI(在qazxsw POI代码= qazxsw POI)?

我已经检查了"The request timed out"的文档,但没有找到一个方法来设置超时值。

谢谢您的帮助!

ios objective-c swift http nsurlconnection
7个回答
103
投票

ObjC

NSURLErrorDomain

Swift

-1001

What docs say

NSURLSessionConfigurationNSURLSessionConfiguration *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


16
投票

如果斯威夫特开发商来这里

要做到这一点,你需要使用

timeoutIntervalForRequest

8
投票

在迅速3.超时15秒。

timeoutIntervalForResource

4
投票

NSURLSessionConfiguration包括财产timeoutIntervalForRequest:

NSURLSessionConfiguration Class Reference

控制超时间隔。还有timeoutIntervalForResource为超时请求开始后。


2
投票

在SWIFT 3.0,您需要使用

    let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
    urlconfig.timeoutIntervalForRequest = 12
    urlconfig.timeoutIntervalForResource = 12
    self.session = NSURLSession(configuration: urlconfig, delegate: self.delegates, delegateQueue: nil)

1
投票

对于斯威夫特4:

    let configuration = URLSessionConfiguration.default
    configuration.timeoutIntervalForRequest = TimeInterval(15)
    configuration.timeoutIntervalForResource = TimeInterval(15)
    let session = URLSession(configuration: configuration)

该timeoutIntervalForRequest是在此基础上配置会话中的所有任务。该timeoutIntervalForResource是在此基础上配置会话中的所有任务。


0
投票

以我为例,我增加了错误的类的超时。我超时错误通过增加URLRequest的超时不URLSession解决

@property NSTimeInterval timeoutIntervalForRequest
© www.soinside.com 2019 - 2024. All rights reserved.