Я работаю над приложением для iOS, которое использует NSMutableURLRequest
и NSURLConnection
для отправки данных на мой сервер. Мне нужно отображать сообщение об ошибке, когда оно терпит неудачу. Мой код для отправки запроса показан ниже
const int TIMEOUT = 120;
-(void)send:(id<NSURLConnectionDelegate>)delegate
{
bodyContents = [bodyContents stringByAppendingFormat:@"--%@--",boundry];
NSData *data = [bodyContents dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
[request setValue:[NSString stringWithFormat:@"%i",[data length]+4] forHTTPHeaderField:@"Content-Length"];
NSLog(@"Timeout before setting custom is %f",request.timeoutInterval);
[request setTimeoutInterval:TIMEOUT];
NSLog(@"Timeout after setting custom is %f",request.timeoutInterval);
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:delegate];
if(connection)
NSLog(@"Connection good");
else
NSLog(@"Connection not so good");
}
//in the delegate class
-(void)connectionDidFinishLoading:(NSURLConnection*)connection
{
NSLog(@"connectionDidFinishLoading");
}
-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError *)error
{
NSLog(@"Failed with error %@",error);
btnCancel.title = @"Retry";
self.navigationItem.hidesBackButton = NO;
[self showAlertDialog:[NSString stringWithFormat:@"%@",[error localizedDescription]] :@"Error"];
}
Я ожидаю, что сообщение didFailWithError будет вызвано через 2 минуты без ответа. Вместо этого он вызывается примерно через 15 секунд без ответа, что не имеет никакого смысла. Я просмотрел документацию, чтобы проверить, неправильно ли я устанавливаю время ожидания, единственное, что я смог найти, это то, что минимальное время ожидания для сообщения с телом составляет 240 секунд, что я неохотно принял.
Результат запуска приложения выглядит следующим образом:
2012-06-22 16:49:12.393 Загрузка мультимедиа[672:707] Тайм-аут перед настройкой пользовательского 240.000000
2012-06-22 16:49:12.394 Загрузка мультимедиа[672:707] Тайм-аут после установки пользовательского значения 240.000000
2012-06-22 16:49:12.395 Загрузка мультимедиа[672:707] Соединение хорошее
22-06-2012 16:49:29.174 Загрузка мультимедиа[672:707] Сбой с ошибкой Домен ошибки=NSURLErrorDomain Code=-1001 Время ожидания запроса истекло. и т.д
Я более чем немного смущен тем, почему время истекает так быстро. Сервер не работает, когда соединение создается, поэтому я даже не уверен, почему он говорит «Соединение хорошее», а не «соединение не очень хорошее», но это другая проблема (надеюсь). Есть предложения?