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

103
13

Я использую 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 5 лет, 4 месяца назад
1
Решение
67

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

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

ответил(а) 2015-02-19T15:58:00+03:00 5 лет, 4 месяца назад
40

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

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

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

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

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