NSURLRequest Timeout IOS

前端 未结 3 1321
误落风尘
误落风尘 2020-12-20 21:57

I need to set timeout 15sec or 30 sec with UIRequest, but it always takes default one. Is there any way to set minimum timeout to connection.

相关标签:
3条回答
  • 2020-12-20 22:33

    There seems to be a problem with setting the timeout interval property at construction time:

    NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:240.0];
    

    Instead set it AFTER construction:

    request.timeoutInterval = 70;

    Also note that there seem to be some limitations to how low you can set the interval. Read this post for more information: https://devforums.apple.com/message/108087#108087

    0 讨论(0)
  • 2020-12-20 22:41

    POST requests have a timeout minimum which is 4 minutes, I believe. The most secure way is to start a NSTimer and cancel the request when the timeout fires.

    0 讨论(0)
  • 2020-12-20 22:46

    This answer explains about the minimum value of timeoutInterval of an NSURLRequest object. If you need a smaller value, then you may do so with starting an NSTimer with the desired time and in the firing method of the timer, you cancel the connection of your NSURLConnection object. As in:

    //....
    connection = [[NSURLConnection connectionWithRequest:request delegate:self] retain];
    [request release];
    
    [connection start];
    
    if (timer == NULL) {
    
        timer = [NSTimer scheduledTimerWithTimeInterval: TimeOutSecond
                                                 target: self
                                               selector: @selector(cancelURLConnection:)
                                               userInfo: nil 
                                                repeats: NO];
        [timer retain];
    }
    
    
    - (void)cancelURLConnection:(NSTimer *)timerP {
        [connection cancel]; //NSURLConnection object
        NSLog(@"Connection timeout.");
        [timer invalidate];
    }
    
    0 讨论(0)
提交回复
热议问题