提问者:小点点

error Domain = NSURLErrorDomain Code =-1005“网络连接丢失。”


我有一个应用程序,可以在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,但仍然收到相同的错误。


共3个答案

匿名用户

重启模拟器解决了我的问题。

匿名用户

我们遇到了这个错误,结果证明是< code>NSURLRequest的底层HTTP实现的问题:

据我们所知,当iOS 8/9/10/11收到带有Keep-Alive标头的HTTP响应时,它会保留此连接以供以后重用(应该如此),但它保留它的时间超过了Keep-Alive标头的超时参数(它似乎总是保持连接活动30秒。然后,当应用程序在不到 30 秒后发送第二个请求时,它会尝试重用可能已被服务器丢弃的连接(如果经过的次数超过了真正的 Keep-Alive 时间)。

以下是我们迄今为止找到的解决方案:

    < li >将服务器的超时参数增加到30秒以上。看起来iOS总是表现得好像不管Keep-Alive头中提供了什么值,服务器都会保持连接打开30秒。(对于Apache,这可以通过设置< code>KeepAliveTimeout选项来完成。 < li >您可以根据应用程序的用户代理,简单地禁用iOS客户端的保持活动机制(例如,对于Apache:< code > browser match " iOS 8 \ "mod文件中的no keepalive < code > setenvif . conf ) < li >如果您没有访问服务器的权限,您可以尝试发送带有< code>Connection: close标头的请求:这将告诉服务器立即断开连接,并且在没有任何keep alive标头的情况下进行响应。但是此时,NSURLSession似乎会在发送请求时覆盖< code>Connection标头(我们没有广泛测试此解决方案,因为我们可以调整Apache配置)

匿名用户

对于我的,模拟器的重置内容和设置有效。要重置模拟器,请按照以下步骤操作:

iOS 模拟器 -

相关问题