2014-10-22 4 views
-1

Я отправляю запрос (MySql Query in XML) на сервер для получения записей.Strange/wiered поведение NSURLConnection sendSynchronousRequest

Все работает отлично, как и ожидалось. Я использую этот способ получения Записи с двух месяцев ..... Вчера я просто столкнулся с странной проблемой,

У меня есть два подключения к Интернету от разных поставщиков (компании-поставщики интернет-услуг), когда я просто меняю настройки WiFi на доступ SECOND Подключение к Интернету, Запрос NSURLConnection Запрос не поступает на сервер и нет ответа в приложении. Я просто поставил точку останова на этапе тестирования и проверил весь код, но с nil Respose. не

Я снова изменить настройки WiFi в ПЕРВОГО Подключения Интернета и снова Нет запрос, отправленный на сервер и NO Response

One Important thing is that, In this testing Period Since Yesterday, 
Three times the Request is sent to Server and I Got Response. 

Почему все это происходит, что может быть проблемой? ... ??

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

Сегодня я просто прекратил XCode и начал снова и с помощью ПЕРВОГО подключения к Интернету теперь все работает отлично, как и должно быть.

Снова Вопрос в чем проблема здесь ... ???

Это код, который я использую для отправки запроса и получения ответа от сервера.

NSString *message = @"XML Contains MySql Query"; 
NSError *error; 
NSURLResponse *response; 
NSURL *uRL = [NSURL URLWithString:@"http://xxxxxxxxxxxxxx"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:uRL]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:[message dataUsingEncoding:NSUTF8StringEncoding]]; 

NSData *xmldata = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error: &error]; 

if (xmldata == nil) 
    { 
     NSLog(@"response: %@", response); 
     NSLog(@"error: %@", error); 
    }  
NSString *data = [[NSString alloc] initWithData:xmldata encoding:NSASCIIStringEncoding]; 

это ответ, и ошибки я получаю

response: (null) 
error: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."  
UserInfo=0x7a6bafa0 {NSErrorFailingURLStringKey=http:/xxxxxxxx, _kCFStreamErrorCodeKey=57, 
NSErrorFailingURLKey=http://xxxxx, NSLocalizedDescription=The network connection was lost., 
_kCFStreamErrorDomainKey=1, NSUnderlyingError=0x7a7ddb80 "The network connection was lost."} 
+1

Я заметил, что вы не обеспечивая 'error' переменного на' sendSynchronousRequest: 'запроса и, таким образом, не рассматриваете ошибку. Добавьте переменную 'error' и' NSLog() 'it, когда' xmldata' является 'nil', затем добавьте полное сообщение об ошибке в вопрос. Всегда проверяйте наличие ошибок и предоставляйте переменные ошибок. – zaph

+0

@Zaph сделал изменения, но ошибка null в NSLog .... –

+0

@Zaph ... это правильный способ проверить Erroe ... ??? –

ответ

1

Поскольку соединение может быть тайм-аута («Сетевое соединение было потеряно.»): Исследовать это.

Вы можете использовать Charles Proxy для просмотра трафика, это даст вам время для подключения. Возможно, вы можете установить более длительный тайм-аут, или у сервера могут быть ограничения времени ожидания.

Сначала я проверил бы время соединения, а затем эта информация могла бы помочь мне решить, что делать дальше.

Предыдущая:
Имеет смысл получить и изучить возвращаемые значения при наличии ошибок.

Пример код:

NSError *error; 
NSHTTPURLResponse *response; 
NSData *xmldata = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
if (xmldata == nil) { 
    NSLog(@"response: %@", response); 
    NSLog(@"error: %@", error); 
} 
+0

позвольте мне проверить ... –

Смежные вопросы