3

I am trying to download data in my application by using the following code

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

but the problem is some times i am getting the following error

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

so , can anybody suggest me how to solve this . . .

Baby Groot
  • 4,637
  • 39
  • 52
  • 71
Shaik Riyaz
  • 11,204
  • 7
  • 53
  • 70

3 Answers3

4

Increase the timeout interval like 150 secs .

1

Try using GCDs abstraction called [NSURLConnection sendAsynchronousRequest:queue:completionHandler::

EXAMPLE:

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

DOES IT MAKING ANY DIFFERENCE?

Master Stroke
  • 5,108
  • 2
  • 26
  • 57
0

The error message clearly states that the request has timed out - Get to a place you get better network speed or increase the request timeout, I see it as 60 now sometimes which may not be sufficient for image downloads.

thatzprem
  • 4,697
  • 1
  • 33
  • 41
  • It's not an image download ;) – HAS Sep 02 '13 at 10:12
  • 2
    In the current NSURLConnection implementation, a timeout occurs when there was "timeoutInterval" seconds *inactivity* on the connection. That is, even when the data gets in slowly, it should not timeout when you get at least one byte every "timeoutInterval" seconds (60 seconds, as specified). – CouchDeveloper Sep 02 '13 at 11:50