1

是否可以使用 UIAlert 处理请求超时?我想通知用户已经超时。我设置0.0只是为了测试,看看它是否会发生。日志没有打印出来,所以我不相信我正在处理更正

request.timeoutInterval=0.0;

并处理它:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
if(error.code == NSURLErrorTimedOut){
    NSLog(@"Time out");
   }
}

我正在使用NSURLConnectionDelegateNSURLConnectionDownloadDelegate

谢谢。

4

1 回答 1

0

您可以在此处找到所有相关错误代码的列表。请注意,-1009 是kCFURLErrorNotConnectedToInternet. 要强制超时,您需要能够抑制 URL 的实际发送,或者找到一个刚刚进入黑洞的 URL。

AppleNetwork Link Conditioner与 Xcode 捆绑在一起(我相信它在网络工具中)。NSHipster上有一篇关于此工具的精彩文章。

获得超时的另一种方法(我相信)是在发送请求后立即切换到另一个应用程序,将您的应用程序置于后台。等待 5 分钟,切换回来,查看日志。您可以做的是在演示应用程序中不断发送 NSURLConnections - 也就是说,一旦第一个返回,发送另一个。所以总会有一个杰出的。现在切换您的应用程序 - 切换到模拟器中的另一个应用程序 - 等待,然后返回。您应该能够通过这种方式捕获条件,您可以看到更改timeoutinterval值的影响。

在用于 iOS 网络的私人 Apple 论坛中有一个关于超时的长线程 - 你也许可以找到它。最后,系统强制执行一个相当长的最小值(我记得),你可以让它更长但不能更短。这种隐藏的行为肯定让很多人感到困惑。这个问题的回答者是Quinn "The Eskimo"苹果公司最有经验的网络工程师之一。

于 2013-11-13T14:32:25.180 回答