我正在尝试使用iOS 8 SDK上的XCode 6(Beta7 2)中的NSURLConnection
进行简单的GET请求,但是“代码1005失败,网络连接丢失”。当我尝试从Web获取http://www.google.com或其他一些示例页面时调用失败,但如果我向localhost(python -m SimpleHTTPServer
)上的简单HTTP服务器发出请求,则调用成功。我也尝试使用AFNetworking
库(2.4.1) - 使用NSURLConnection失败的URL也会因库而失败。
这是我的代码 -
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]);
}
日志:
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)
答案 0 :(得分:92)
我最近看到iPhone 6模拟器上的互联网连接失败,导致相同的错误。我的Mac有一个工作的互联网连接模拟器没有。重新启动模拟器解决了这个问题。
答案 1 :(得分:8)
我在iOS 9上通过某些网络电话持续得到此错误。两个工作正常,但另外两个没有。
原来是由于我在请求的正文中传递了一些不正确的参数...我不希望这会导致-1005错误...但它确实..摆脱了不必要的参数让它全部工作!
答案 2 :(得分:2)
我已经尝试了至少15个来自Google的答案所建议的所有内容,但在我尝试以下完全解决我的问题之前,其中没有一个解决了我的问题。似乎Wi-Fi连接可能在Mac上损坏,因此如果您删除正在使用的特定连接,然后再次连接(通过选择网络并再次输入密码),那么这将解决问题并且不再是可怕的-1005 “网络连接丢失”错误。
答案 3 :(得分:1)
尝试在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 {
}];
答案 4 :(得分:0)
我有类似的问题,重启模拟器没有工作。在我的情况下,我能够点击Web服务,就像在奇怪的时间它会成功,甚至在时间它让我犯这个错误。我知道它很奇怪,但不知怎的。用swift中的以下方法解决了这个问题:
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()
答案 5 :(得分:-1)
简单&样品溶液,多次测试,工作完美。
//使用状态代码检查响应错误,如果得到-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)
})
}
}