错误:错误域=NSURLErrorDomain 代码=-1001“请求超时。”

Posted

技术标签:

【中文标题】错误:错误域=NSURLErrorDomain 代码=-1001“请求超时。”【英文标题】:Error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." 【发布时间】: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,重置了内容和设置,但没有任何效果。

【问题讨论】:

【参考方案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 秒内发送 50 个)。 关闭/终止应用程序(这将关闭与服务器的连接) (可选)稍等片刻(比如说 60 秒) 再次启动应用并尝试发送请求

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

与服务器的家伙。

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

【讨论】:

【参考方案8】:

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

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

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

【讨论】:

以上是关于错误:错误域=NSURLErrorDomain 代码=-1001“请求超时。”的主要内容,如果未能解决你的问题,请参考以下文章

错误:错误域=NSURLErrorDomain 代码=-1001 “请求超时。”

错误:错误域=NSURLErrorDomain 代码=-1001“请求超时。”

API 失败,错误域=NSURLErrorDomain 代码=-1003

错误域= NSURLErrorDomain代码= -1005“网络连接丢失。”

Alamofire 蜂窝网络“错误域=NSURLErrorDomain 代码=-1009”

IOS:kCFErrorDomainCFNetwork 错误 -1002。错误域=NSURLErrorDomain 代码=-1002 “不支持的 URL”