NSMutableURLRequest“请求超时”问题。

3
我正在尝试使用以下代码在我的应用程序中下载数据:
NSURL *url = [NSURL URLWithString:@"my download url string"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.f];

NSURLConnection * connection = [NSURLConnection connectionWithRequest:request delegate:self];

[connection start];

但问题是有时我会遇到以下错误。
Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x1d5be240 
{NSErrorFailingURLStringKey=http://dr282zn36sxxg.cloudfront.net/datastreams/f-
d%3Afc7f649e1e3ba58452f67e3fa1f66f69a15b96b3ea585c946e4fa854%2BEPUB%2BEPUB.1, 
NSErrorFailingURLKey=http://dr282zn36sxxg.cloudfront.net/datastreams/f-
d%3Afc7f649e1e3ba58452f67e3fa1f66f69a15b96b3ea585c946e4fa854%2BEPUB%2BEPUB.1, 
NSLocalizedDescription=The request timed out., NSUnderlyingError=0x1e1975b0 "The request 
timed out."}

所以,有人能建议我如何解决这个问题吗...

@riyaz 这是一个相当大的文件,你是在WiFi还是蜂窝网络上下载的? - HAS
你尝试过使用块吗? - Master Stroke
@iOSCoder 不是的,我没有使用 blocks。这个错误和不使用 blocks 有关吗? - Shaik Riyaz
@riyaz 不是这样的。你处理的方式是正确的! - HAS
@riyaz,不,只是尝试一下下面的方法...我坚信这是因为你使用的网络连接不稳定... - Master Stroke
显示剩余8条评论
3个回答

4

将超时时间间隔增加到150秒。


1

尝试使用GCD的抽象层,称为[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]:

示例

NSURL *url = [NSURL URLWithString:@"your_URL"];
NSURLRequest *myUrlRequest = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest: myUrlRequest queue: queue completionHandler: ^ (NSURLResponse *response, NSData *data, NSError *error)
{

    if ([data length] > 0 && error == nil)
        //doSomething With The data

    else if (error != nil && error.code == ERROR_CODE_TIMEOUT)
        //time out error

    else if (error != nil)
        //download error
}];

这有什么区别吗?


0
错误信息明确指出请求已超时-到一个可以获得更好网络速度的地方或增加请求超时时间,我现在看到它是60,有时对于图像下载可能不足够。

这不是一个图片下载 ;) - HAS
2
在当前的NSURLConnection实现中,当连接上没有“超时间隔”秒的活动时,就会发生超时。也就是说,即使数据传输缓慢,只要每“超时间隔”秒(如规定的60秒)至少有一个字节传输,就不应该超时。 - CouchDeveloper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接