【问题标题】:Error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."错误:错误域=NSURLErrorDomain 代码=-1001“请求超时。”
【发布时间】:2015-01-14 08:56:40
【问题描述】:

我正在开发 Xcode 6.1、iOS 8.1 中的应用程序;该应用程序在 2 天前运行良好,但今天我执行它时,我在 Web 服务中遇到错误,并且错误打印在下面。

Error: Error Domain=NSURLErrorDomain Code=-1001 "请求计时 出。” UserInfo=0x7c6899b0 {NSErrorFailingURLStringKey=, NSErrorFailingURLKey=, NSLocalizedDescription=请求定时 out., NSUnderlyingError=0x7c688f60 "请求超时。"}

我曾使用 AFNetworking 2.x 和以下代码 sn-p 进行网络调用:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes=[manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];

[manager POST:<URL>
   parameters:<parameters>
      success:^(AFHTTPRequestOperation *operation, id responseObject) {

          NSLog(@"JSON: %@", responseObject);
          NSError *error = nil;
          NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
          if (error) {
              NSLog(@"Error serializing %@", error);
          }
          NSLog(@"Dictionary %@", JSON);
          NSLog(@"Success");
      }
      failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          NSLog(@"Error: %@", error);
      }]; 
}

更新: 我已经退出/重新启动了 iOS Simulator.app,重置了内容和设置,但没有任何效果。

【问题讨论】:

    标签: ios ios8 ios-simulator xcode6.1


    【解决方案1】:

    如果您的网络配置在模拟器运行时发生更改,就会发生这种情况。请重新启动模拟器运行时(例如:退出/重新启动 iOS Simulator.app),这可能会解决您的问题。

    如果问题仍然存在,请更新您的问题以表明您遇到的问题不是这个已知问题。谢谢。

    【讨论】:

    • 我已经检查过了,我的网络配置没有改变,整个过程都是一样的。我已经完成了所有我知道的事情,退出/重新启动 iOS Simulator.app,重置了内容和设置......但没有任何效果。
    【解决方案2】:

    代码中没有问题。我猜模拟器内部无法连接到互联网,这就是为什么它在提供各种超时间隔后无法连接到服务器的原因。但是当我改天执行时,它工作得很好。感谢@Andrew Jaffee 帮助我找到了这个问题。

    【讨论】:

      【解决方案3】:

      iOS 模拟器 -> 重置内容和设置;为我工作

      【讨论】:

        【解决方案4】:

        我正在调用本地服务器连接并收到此错误。我在我的设备和手机中使用不同的网络。当我将两者都连接到同一个 wifi 时,它起作用了。

        【讨论】:

        • 我使用的是模拟器,但同时连接了以太网和 wifi 网络。断开“额外”网络,并重置模拟器内容和设置。工作得很好! (另外,实际上得到了NSURLErrorDomain Code=-1005
        【解决方案5】:

        遇到这个问题并且有不同的解决方案,所以我想我会在这里添加它:

        基本上,当它应该是一个干净的 GET 请求时,我发送了一些参数。删除参数,GET请求正常。

        【讨论】:

        • 这实际上也是为我准备的......在digitalocean上使用linux服务器、ubuntu、nginx
        • 谢谢@JanPapenbrock,我发誓我每周犯一次这个错误完全是出于习惯。
        【解决方案6】:

        您必须关闭防火墙才能正常工作。我尝试了这个解决方案,它对我有用。

        【讨论】:

          【解决方案7】:

          好的,我在调查类似问题上浪费了很多时间。

          在我的情况下,问题是服务器上的奇怪(坏?)防火墙。当短时间内有很多(不是很多)请求时,它会禁止设备。

          如果您遇到类似问题,我相信您可以轻松测试。

          1. 循环发送大量(取决于防火墙设置)请求(假设 1 秒内发送 50 个)。
          2. 关闭/终止应用程序(这将关闭与服务器的连接)
          3. (可选)稍等片刻(比如说 60 秒)
          4. 再次启动应用并尝试发送请求

          如果你现在所有下一个请求都超时了,你可能有同样的问题,你应该谈谈

          与服务器的家伙。

          PS:如果您无权访问服务器,您可以向用户提供他应该在设备上重新启动 wifi 以退出该超时循环的信息。在某些情况下,这可能是最后的手段。

          【讨论】:

            【解决方案8】:

            我在一家企业公司工作,所以我们使用 VPN 来连接我们的网络服务。

            我的电脑连接到 VPN,所以我的模拟器(xcode 模拟器)可以 VPN,但我自己的 iPhone(真手机)没有连接到 VPN,所以这个问题出现了,因此你的模拟器应该连接到 URL

            请在模拟器中检查您的网址。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-10-24
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多