错误:错误域=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”