Ответ 1
В последнее время я видел сбои в подключении к Интернету на симуляторе iPhone 6, что привело к тем же ошибкам. У моего Mac было рабочее интернет-соединение, которое симулятор не сделал. Перезапуск симулятора исправил проблему.
Я пытаюсь сделать простой запрос GET с помощью NSURLConnection
в XCode 6 (Beta7 2) в iOS 8 SDK, который не работает с "Code 1005, сетевое соединение было потеряно". Вызов завершается неудачно, когда я пытаюсь извлечь http://www.google.com или несколько других образцов страниц из Интернета, но успешно, если я сделаю запрос к простому HTTP-сервер на localhost (python -m SimpleHTTPServer
). Я также пробовал использовать библиотеку AFNetworking
(2.4.1) - URL-адреса, которые не совпадают с NSURLConnection, также терпят неудачу с библиотекой.
Здесь мой код -
NSString * url = @"http://0.0.0.0:8000";
// NSString * url = @"http://www.google.com";
NSLog(@"URL : %@", url);
// Mutable is probably not required, but just in case it REALLY WANTS me to set HTTP method
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[theRequest setHTTPMethod:@"GET"];
NSURLResponse *urlResponse = nil;
NSError *error = nil;
NSData * data = [NSURLConnection sendSynchronousRequest:theRequest
returningResponse:&urlResponse
error:&error];
if (error == nil) {
NSString *response = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(response);
} else {
NSString *response = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"%@", [error userInfo]);
}
Logs:
2014-09-11 17:34:23.950 SearchExample[5092:2074687] URL : http://www.google.com
2014-09-11 17:34:24.023 SearchExample[5092:2074687] {
NSErrorFailingURLKey = "http://www.google.com";
NSErrorFailingURLStringKey = "http://www.google.com";
NSLocalizedDescription = "The network connection was lost.";
NSUnderlyingError = "Error Domain=kCFErrorDomainCFNetwork Code=-1005 \"The network connection was lost.\" UserInfo=0x7fc8515640a0 {NSErrorFailingURLStringKey=http://www.google.com/, NSErrorFailingURLKey=http://www.google.com/, _kCFStreamErrorCodeKey=57, _kCFStreamErrorDomainKey=1, NSLocalizedDescription=The network connection was lost.}";
"_kCFStreamErrorCodeKey" = 57;
"_kCFStreamErrorDomainKey" = 1;
}
2014-09-11 17:34:24.023 SearchExample[5092:2074687] URLResponse: (null)
В последнее время я видел сбои в подключении к Интернету на симуляторе iPhone 6, что привело к тем же ошибкам. У моего Mac было рабочее интернет-соединение, которое симулятор не сделал. Перезапуск симулятора исправил проблему.
Я получал эту ошибку последовательно на iOS 9 с определенными сетевыми вызовами. Двое работали нормально, но еще двое не были.
Оказалось, что это вызвано некоторыми неправильными параметрами, которые я передавал с телом запроса... Я бы не ожидал, что это вызовет ошибку -1005... но это произошло.. Избавьтесь от ненужных параметров заставило все это работать!
Я пробовал все, что предлагалось, по крайней мере, на 15 ответах от Google, но ни одна из них не решила мою проблему, пока я не попробовал следующее, полностью посвященное моей проблеме. Похоже, что соединения Wi-Fi могут стать поврежденными на Mac, поэтому, если вы удалите определенное соединение, которое используете, а затем снова подключитесь (выбирая сеть и снова вводите свой пароль), тогда это исправит проблему и не станет более страшным -1005 "сетевое соединение было потеряно".
Попробуйте изменить сериализацию запроса в AFNetworking http или json. в моем случае это был json, затем я установил http. Теперь это работает.
[[VTNetworkingHelper sharedInstance] performRequestWithPath:@"Your url " withAuth:YES forMethod:@"POST" withRequestJSONSerialized:NO withParams:params withCompletionHandler:^(VTNetworkResponse *response) {
if (response.isSuccessful) {
}else {
}];
Я наблюдал, что эта проблема возникает, когда вы продолжаете активный симулятор, и ваш макинджер спать длительное время (скажем, от 5 до 10 часов). Затем внезапно вы запускаете приложение на симуляторе, оно отображает журнал как
NSURLConnection GET request returns Code=-1005 "The network connection was lost."
Решение состоит в том, чтобы просто выйти из симулятора, очистить проект и повторно запустить проект. Это сработало для меня!
У меня была аналогичная проблема и перезагрузка симулятора не работала. В моем случае я мог ударить по веб-сервису в качестве альтернативы, так как в нечетное время это было бы успешным, и даже за это время он бросил меня с этой ошибкой. Я знаю, что это странно, но так было. Решила его с помощью быстрого подхода:
let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
urlconfig.timeoutIntervalForRequest = 1
urlconfig.timeoutIntervalForResource = 1
let session = NSURLSession(configuration: urlconfig)
let task = session.dataTaskWithRequest(request){(data,response,error) in
//Processing
}
task.resume()
Простое и выборочное решение, проверенное много раз, отлично работает.
//Проверьте ответную ошибку с кодом состояния, и если вы получите -1005, то снова вызовите это api.
if let strErrorReasonCode : Int = response.response?.statusCode {
if authentication_Errors_Range.contains(Alamofire_Error) {
self.POST(urlString, paramaters: paramaters, showLoader: showLoader, success: { (responseObject) in
if response.result.isSuccess {
if let value = response.result.value {
let dictResponce = self.isValidated(value as AnyObject)
if dictResponce.0 == true {
success(dictResponce.1)
}
else {
failure(dictResponce.1)
}
}
}
}, failure: {_ in
failure(jsonResponce)
})
}
}