NSMutableURLRequest timeout interval not taken into consideration for POST requests NSMutableURLRequest timeout interval not taken into consideration for POST requests ios ios

NSMutableURLRequest timeout interval not taken into consideration for POST requests


According to a post on the Apple developer forum, the minimum timeout interval for POST is 240 seconds. Any timeout interval shorter than that is ignored.

If you require a shorter timeout interval, use an async request along with a timer and call cancel on the NSURLConnection as needed.

link to thread: here


iOS 6 has fixed this issue.

NSMutableURLRequest *request = [NSMutableURLRequest                                 requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20];[request setHTTPMethod:method];[request setHTTPBody:requestBody];NSLog(@"%f", [request timeoutInterval]); //20.0 in iOS 6//240.0 in iOS 4.3, 5.0, 5.1


Fixed with Clay Chambers's suggestion: with a custom timerAdded a timer in a subclass of NSURLConnection

if (needsSeparateTimeout){    SEL sel = @selector(customCancel);    NSMethodSignature* sig = [self methodSignatureForSelector:sel];    NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:sig];    [invocation setTarget:self];    [invocation setSelector:sel];    NSTimer *timer = [NSTimer timerWithTimeInterval:WS_REQUEST_TIMEOUT_INTERVAL invocation:invocation repeats:NO];    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];}

In the custom cancel method the connection is cancelled

[super cancel];