我正在使用NSMutableURLRequest连接到网站以获取JSON响应。我这样做是通过生成请求,然后使用NSURLConnection与self的委托来处理异步连接。我已经实现了所有正常的委托方法:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
所有这些都可以完美地恢复数据,处理发生的任何错误等。但是,如果将NSURLRequest上的超时设置为10秒,我似乎不会在这些方法中调用(我希望调用didFailWithError) )。它只是永远坐在那里,我没有通知它超时。
阅读iPhone API文档我没有看到在超时发生时应该发生什么,只是你可以设置超时值。应该怎么办?我没有在API中看到任何其他有用的委托方法。我没有手动检查超时,是吗?超时仅适用于同步请求吗?
答案 0 :(得分:12)
此方法收到您的超时:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
答案 1 :(得分:4)
in确实失败了
错误:错误Domain = NSURLErrorDomain Code = -1001 UserInfo = 0xed4870 “超时”
答案 2 :(得分:3)
超时行为有点古怪,请参阅Apple开发者论坛上的this thread。
答案 3 :(得分:1)
在每个方法中放入一些日志语句并检查它们给出的内容。每当它超时,你肯定会在控制台上收到关于超时的通知。我收到了通知。检查您的代码,如果您仍有问题,请告诉我们。
答案 4 :(得分:1)
我做的是:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
if (error.code == -1001){
[self showTimeoutAlert];//My method to show dialog with timeout message.
} else {
[self showInvalidURLAlert];//My method to show dialog with bad URL message.
}
}
如上所述-1001是为了超时,在其他测试中我得到-1003(对于错误的URL或没有连接可用)。
我的目标是处理超时,以便我将其视为错误的URL。