gpt4 book ai didi

ios - NSURLConnection:与调用 connection:didReceiveResponse: 和 connection:didFailWithError: 的顺序混淆

转载 作者:行者123 更新时间:2023-11-29 10:26:21 25 4
gpt4 key购买 nike

这可能是一个非常愚蠢的问题!!但是,由于我有疑问,想在这里问。

  1. 这两个委托(delegate)方法(即 connection:didReceiveResponse:connection:didFailWithError:)是否相互排斥?我的意思是,在任何情况下,NSURLConnection 对象都可以调用这两个委托(delegate)方法吗?

  2. 如果只有 connection:didFailWithError: 被调用,如何获取 HTTP 状态码?

最佳答案

来自文档:

The only case where this message is not sent to the delegate is when the protocol implementation encounters an error before a response could be created.

NSURLConnectionDelegate Class Reference

因此,NSURLConnection 可能会在获得响应之前失败,但也可能在获得响应之后失败。由于 connection:didFailWithError 停止了该连接的任何进一步消息,可能会发生以下两种情况:

  1. 连接已启动,未能获得响应并调用 connection:didFailWithError。
  2. 连接启动并获得响应,调用 connection:didReceiveResponse:,然后由于某种原因连接失败(例如,网络连接可能断开),然后调用 connectionDidFinishLoading。

您需要从 connection:didReceiveResponse 获取 HTTP 状态代码,如果未调用该方法,则没有状态代码,因为它是响应的一部分。如果您需要从 connection:didFailWithError 中访问它,您将需要记录它。

请注意,要获取状态代码,您还需要将 NSURLResponse 转换为 NSHTTPURLResponse,如下所示:

NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"Status code %ld", httpResponse.statusCode);

关于ios - NSURLConnection:与调用 connection:didReceiveResponse: 和 connection:didFailWithError: 的顺序混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com