Ошибка получения Домен =NSURLErrorDomain Код =-1005 только для мобильной сети

Я создал приложение с использованием Xcode 8.3.2 на iOS 10.3.2. И я использовал NSURLSession реализовать веб-сервисы. Я использую следующий код, чтобы сделать это.

NSMutableURLRequest *request=[[NSMutableURLRequest alloc]initWithURL:Url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:180.0] ;

NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
[dict setObject:lati forKey:@"latitude"];
[dict setObject:longi forKey:@"longitude"];

NSError *errJsonToData = nil;
NSData *requestPostData=[NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&errJsonToData] ; 

[request setHTTPMethod:@"POST"] ;
[request setValue:[NSString stringWithFormat:@"%lu",(unsigned long)[requestPostData length]] ;forHTTPHeaderField:@"Content-Length"] ;
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:requestPostData] ;


NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session=[NSURLSession sessionWithConfiguration:sessionConfiguration delegate:nil delegateQueue:[NSOperationQueue mainQueue]];

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable connectionError) {
    if(connectionError)
    {
      NSLog(@"Error Description: %@",[connectionError localizedDescription]);
    } else { //do anything}
}];
[dataTask resume];

Теперь URL-адреса моих веб-сервисов являются http-связью. Для этого я также добавил App Transport Security в Info.plist. Но проблема в том, что этот код работает нормально при подключении к Wi-Fi, но иногда выдает ошибку при подключении к мобильной сети, то есть 3G, LTE. Я получаю сообщение об ошибке "Сетевое соединение потеряно". Ошибка заключается в следующем:

Ошибка: Ошибка Домен =NSURLErrorDomain Код =-1005 "Сетевое соединение потеряно". UserInfo=0x7ba8e5b0 {NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=57, NSErrorFailingURLKey=, NSLocalizedDescription= Сетевое соединение было потеряно., _KCFStreamErrorDomainKey=1, соединение NSUnder0e0707) 07.

Если это типичная ошибка сервера, то почему это происходит только в мобильной сети?

1 ответ

В зависимости от того, какой сервер вы используете, возможно, проблема связана с параметром "KeepAlive" на вашем сервере (обычно из-за более высокого трафика на сервер, чем ожидалось). Попробуйте перехватить этот конкретный код ошибки и повторите попытку того же URL-запроса. Надеюсь, что это просто сработает, но если во второй раз возникнет та же ошибка, то есть еще большая проблема, которую необходимо решить.

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

Удачи!

Другие вопросы по тегам