10

我正在使用 NSMutableURLRequest 连接到网站以获取 JSON 响应。我这样做是通过生成请求,然后使用带有 self 委托的 NSURLConnection 来处理异步连接。我已经实现了所有正常的委托方法:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

一切都可以完美地取回数据,处理发生的任何错误等。但是,将 NSURLRequest 的超时设置为 10 秒,我似乎没有在这些方法中被调用(我希望 didFailWithError 被调用)。它只是永远坐在那里,我没有通知它超时。

阅读 iPhone API 文档,我没有看到任何关于超时发生时应该发生什么的提及,只是您可以设置超时值。应该发生什么?我在 API 中没有看到任何其他有帮助的委托方法。我不必手动检查超时,对吗?超时仅适用于同步请求吗?

4

5 回答 5

12

通过此方法收到您的超时:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
于 2009-08-10T08:29:59.653 回答
4

你会收到这种类型的iofo:

确实失败了

错误:错误域=NSURLErrorDomain 代码=-1001 UserInfo=0xed4870“超时”

于 2009-08-10T06:39:28.270 回答
3

超时行为有点古怪,请参阅Apple 开发者论坛上的这个帖子。

于 2010-06-04T07:22:34.467 回答
2

我所做的是这样的:

- (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。

于 2015-02-12T10:17:34.777 回答
1

在每个方法中放置一些日志语句并检查它们给出的内容。每当超时时,您肯定会在控制台上收到有关超时的通知。我收到了那个通知。检查您的代码,如果仍有问题,请告诉我们。

于 2009-08-10T04:51:31.840 回答