NSMutableURLRequest"请求超时"问题 。 。

时间:2013-09-02 09:49:39

标签: ios objective-c nsurlconnection nsmutableurlrequest nsurlconnectiondelegate

我正在尝试使用以下代码在我的应用程序中下载数据

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."}

所以,任何人都可以建议我如何解决这个问题。 。

4 个答案:

答案 0 :(得分:4)

增加超时间隔,如150秒。

答案 1 :(得分:1)

尝试使用名为[NSURLConnection sendAsynchronousRequest:queue:completionHandler:的GCD抽象:

示例

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
}];

它是否会产生任何差异?

答案 2 :(得分:0)

重新发送请求,我猜:)或使请求超时间隔更长(如120秒)。

答案 3 :(得分:0)

错误消息清楚地表明请求已超时 - 到达一个可以获得更好的网络速度或增加请求超时的地方,我现在看到它有时可能不足以进行图像下载。