iPhone SDK: время запроса URL не истекло - PullRequest
3 голосов
/ 18 марта 2010

У меня проблема с сетевым запросом, который должен истечь, но метод не вызывается. Запрос выглядит следующим образом:

#define kCONNECT_TIMEOUT 20.0

request = [NSMutableURLRequest requestWithURL: aUrl];
[request setHTTPMethod: @"POST"];
postData = [jsonData dataUsingEncoding:NSASCIIStringEncoding];
[request setHTTPBody:postData];
[request setValue:@"text/xml" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setCachePolicy:NSURLCacheStorageAllowed];
[request setTimeoutInterval:kCONNECT_TIMEOUT];
self.connection = [NSURLConnection connectionWithRequest:request delegate:self];
assert(self.connection != nil);

Это должно получить обратный вызов

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)_error 

Но через 4 минуты сообщение об ошибке не отображается. Кто-нибудь знает, почему это может быть?

Ответы [ 2 ]

3 голосов
/ 18 марта 2010

Если вы хотите лучше управлять таймаутом для http-запросов с использованием NSURLConnection, то гораздо лучше выполнить запрос асинхронный вместе с NSTimer, который может отменить NSURLConnection при его запуске, потому что истекло время ожидания.

Это также означает, что вам не нужно иметь дело с потоками, что, как правило, хорошая идея. Операции, основанные на асинхронных событиях (runloop), являются подходящим способом в 99,9% случаев на iPhone.

2 голосов
/ 18 марта 2010

Представитель Apple объявил, что в SDK 3.0 и более поздних версиях установлен минимальный тайм-аут (как вы уже догадались) в четыре минуты:

https://devforums.apple.com/thread/25282

Если вы попытаетесь установить значение тайм-аута менее 240 секунд, оно будет ограничено до 240. Если вам нужен более короткий тайм-аут, я проголосую за решение St3fan.

...