Несколько URL-адресов, полученных для одного NSURLConnection

90
11

Я использую NSURLConnection для связи и передачи/получения данных на сервер. Я отправляю запрос только один раз, но журнал доступа к серверу показывает, что он получает несколько запросов. Я пытался зарегистрировать запрос, который я отправляю на сервер, но он печатает только один раз. Код для отправки запроса на сервер:

 NSURL *url=[NSURL URLWithString:[[NSString stringWithFormat:@"%@/services/OtherProcess/Status",serverIP]stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
NSLog(@"Sending URL -> %@",url);
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];

if(connection)
[connection cancel];
connection=[NSURLConnection connectionWithRequest:theRequest delegate:self];

responseData = [[NSMutableData alloc] init];

Я даже пытался добавить точку останова и обнаружил, что она называется только один раз. Любая помощь будет полезна.

спросил(а) 2015-02-19T15:45:00+03:00 4 года, 11 месяцев назад
3
Решение
59

Почему вы не используете делегата для регистрации соединения NSURLConnectionDataDelegate? Соединение может оставаться активным в течение периода времени перенаправления и такого, что может заставить ваш сервер регистрировать несколько запросов. Вы можете использовать это connection:willSendRequest:redirectResponse: метода connection:willSendRequest:redirectResponse: чтобы увидеть, произошло ли перенаправление.

Переадресация может произойти, если требуется auth. Кроме того, если вы не уверены, вы всегда можете проверить (только для тестирования, так как они заблокируют ваш основной поток) синхронным запросом, используя этот метод sendSynchronousRequest:returningResponse:error:

ответил(а) 2015-02-19T15:58:00+03:00 4 года, 11 месяцев назад
Еще 2 ответа
35

Для меня это был тайм-аут сокета на нашем сервере. Наш сервер закрывал сокет, и iOS внутренне переписывал еще 3 раза, прежде чем он сдался. Увеличение времени ожидания/изменение настройки работало для меня.

ответил(а) 2015-03-06T18:10:00+03:00 4 года, 10 месяцев назад
35

У меня такая же проблема. Я назвал веб-страницу iFrame. Этот iFrame также называют делегатами NSURLConnetion.

ответил(а) 2015-02-19T15:54:00+03:00 4 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема