1

我注意到,如果存在连接问题,那么除了 didFailWithError: (使用 HTTP 400)之外,还会调用 didReceiveResponse:。

这不是我所期望的,并且使处理错误情况变得棘手 - 特别是因为我还注意到 didReceiveResponse: 是在 didFailWithError: 之前调用的东西:有时在它之后。

我不敢相信这是预期的行为,因此我想知道我的代码是否存在某种问题,但如果有的话,我无法想象如何。

任何人都可以确认 NSURLConnection 的行为应该是什么,或者他们以前是否见过这样的行为?

4

1 回答 1

3

很确定这是按预期工作的。-connectionDidFinishLoading:connection:didFailWithError:方法是互斥的,但是任何一个都可以通过调用(或多个!)来进行connection:didReceiveResponse:

毕竟,在这种情况下,您确实收到了有效的 HTTP 响应。它恰好表明您的请求由于该请求的某些问题而无法处理。(与加载失败但没有响应的超时相反。)

但是,其中一个-connectionDidFinishLoading:connection:didFailWithError:应该始终是您为给定连接收到的最后一条消息。(如果您对多个连接使用单个委托,请确保在看到这些调用乱序时查看的是同一个连接对象。)

于 2012-08-22T22:06:15.390 回答