我注意到,如果存在连接问题,那么除了didFailWithError:(使用HTTP400)之外,还会调用didReceiveResponse:。
这不是我所期望的,这使得处理错误情况变得棘手--特别是因为我还注意到了didReceiveResponse:是在didFailWithError之前调用的东西吗:有时在它之后调用。
我不敢相信这是有意为之的行为,因此我想知道我的代码是否存在某种问题,但如果有问题,我无法想象是如何发生的。
有没有人能确认NSURLConnection的行为应该是什么,或者他们以前是否见过这样的行为?
发布于 2012-08-23 06:06:15
我很确定这是按照预期工作的。-connectionDidFinishLoading:和connection:didFailWithError:方法是互斥的,但是任何一个方法都可以通过一个调用(或多个调用!)敬connection:didReceiveResponse:。
毕竟,在本例中,您确实收到了有效的HTTP响应。它只是碰巧表明您的请求由于该请求的某些问题而无法处理。(而不是,比方说,超时,加载失败,但从来没有响应。)
但是,对于给定的连接,-connectionDidFinishLoading:或connection:didFailWithError:中的一个应该始终是您获得的最后一条消息。(如果对多个连接使用单个委托,请确保在看到这些调用顺序混乱时查看的是同一个connection对象。)
https://stackoverflow.com/questions/12081711
复制相似问题