是否可以使用UIAlert处理请求超时?我想告诉用户有一段时间了。我设置0.0
只是为了测试它是否会发生。日志不会打印出来,所以我不相信我正在处理纠正
request.timeoutInterval=0.0;
并处理它:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
if(error.code == NSURLErrorTimedOut){
NSLog(@"Time out");
}
}
我正在使用NSURLConnectionDelegate
和NSURLConnectionDownloadDelegate
感谢。
答案 0 :(得分:0)
您可以找到所有相关错误代码here的列表。请注意,-1009是kCFURLErrorNotConnectedToInternet
。要强制超时,您需要能够禁止实际发送URL,或者找到一个刚进入黑洞的URL。
Apple捆绑Network Link Conditioner
与Xcode(我相信它的网络工具)。关于此工具on NSHipster有一篇很棒的文章。
另一种(我相信)获得超时的方法是在发送请求后立即切换到另一个应用程序,将你的应用程序置于后台。等待5分钟,切换回来,查看日志。你可以做的是在一个演示应用程序中不断发送NSURLConnections - 也就是说,一旦第一次返回,发送另一个。所以总有一个杰出的。现在切换你的应用程序 - 切换到模拟器中的另一个应用程序 - 等待,然后返回。您应该能够以这种方式捕捉条件,您可以看到更改timeoutinterval
值的影响。
关于iOS网络的私人Apple论坛有一个很长的关于超时的帖子 - 你可能能够找到它。最后,系统强制执行一个相当长的最小值(我记得),你可以使它更长但不短。这种隐藏的行为肯定会困扰很多人。这个问题的回应者是Quinn "The Eskimo"
,他是Apple最有经验的网络工程师之一。