【发布时间】:2014-06-19 04:14:12
【问题描述】:
我正在使用 iOS 7 的新 NSURLSessionDataTask 来检索数据,如下所示:
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:
request completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
//
}];
如何增加超时值以避免错误"The request timed out"(在NSURLErrorDomain Code=-1001)?
我检查了NSURLSessionConfiguration 的文档,但没有找到设置超时值的方法。
感谢您的帮助!
【问题讨论】:
-
你在做很多请求吗?如果是这样,只是增加超时可能不是正确的方法,而是您想要限制您尝试的并发请求的数量(例如,
NSOperationQueue和maxConcurrentOperationCount)。如果您使用NSURLSession的基于非委托的再现并且使用完成块再现,这并不太复杂。由于NSURLSession架构存在很大的烦恼,如果使用基于委托的方法,要正确执行此操作会有点痛苦。 -
我的主要问题是 HTTP 服务器(不在我的控制范围内)有时负载很重,响应速度极慢。您是否知道
sharedSession的超时默认值? -
不,但正如其他人所说,您应该只创建自己的
defaultSessionConfiguration并设置适合您服务器的timeOutIntervalForRequest。只是发出超过四五个并发请求导致的超时问题是一个完全不同的问题,并提出了不同的解决方案。但是,如果您只发出一两个请求并且它们仍然超时,那么设置timeoutInterval属性是正确的方法。
标签: ios objective-c swift http nsurlsession