Установка времени ожидания запроса в nsmutablerequest ios
Мне нужно настроить 30-секундную задержку в приложении, когда оно пытается подключиться к веб-службе. Я пробовал cachePolicy:timeoutInterval, но это не имеет никакого эффекта. Мой код ниже:
NSURL *url = [NSURL URLWithString:@"http://myservice.asmx"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];
[request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"http://tempuri.org/GetVehiclesByPhone_ServiceCall_Proc" forHTTPHeaderField:@"SOAPAction"];
[request addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]];
NSError *error;
NSURLResponse *response;
webData =[[NSMutableData alloc] init];
webData = (NSMutableData *) [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
1 ответ
Использование +[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]
,
В принципе, +[NSURLConnection sendSynchronousRequest:returningResponse:error:]
не подчиняется timeoutInterval
это передается в течение небольших интервалов, в то время как асинхронные запросы делают.
Если вы думаете о том, как все работает, это становится очевидным: синхронные запросы блокируются, и у сторожевого таймера нет простого способа проверить время ожидания - поток блокируется!. Асинхронные запросы не блокируют поток, поэтому он может проверять время ожидания при каждом запуске цикла выполнения.