我有一个应用程序,可以在iOS7和iOS8的Xcode6-Beta1和Xcode6-Beta2上运行良好。但是使用 Xcode6-Beta3、Beta4、Beta5 我在 iOS8 上面临网络问题,但在 iOS7 上一切正常。我收到错误“网络连接丢失”。
错误如下:
错误:错误域 = NSURLErrorDomain 代码 =-1005“网络连接丢失”。UserInfo=0x7ba8e5b0 {NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=57, NSErrorFailingURLKey=, NSLocalizedDescription=网络连接丢失。, _kCFStreamErrorDomainKey=1, NSUnderlyingError=0x7a6957e0 “网络连接丢失。
我使用 AFNetworking 2.x 和以下代码片段进行网络调用:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:policy];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:<example-url>
parameters:<parameteres>
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@“Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
我尝试了NSURLSession
,但仍然收到相同的错误。
重启模拟器解决了我的问题。
我们遇到了这个错误,结果证明是< code>NSURLRequest的底层HTTP实现的问题:
据我们所知,当iOS 8/9/10/11收到带有Keep-Alive标头的HTTP响应时,它会保留此连接以供以后重用(应该如此),但它保留它的时间超过了Keep-Alive
标头的超时
参数(它似乎总是保持连接活动30秒。然后,当应用程序在不到 30 秒后发送第二个请求时,它会尝试重用可能已被服务器丢弃的连接(如果经过的次数超过了真正的 Keep-Alive
时间)。
以下是我们迄今为止找到的解决方案:
对于我的,模拟器的重置内容和设置
有效。要重置模拟器,请按照以下步骤操作:
iOS 模拟器 -