【问题标题】:NSURLConnection - didFailWithError not invokedNSURLConnection - didFailWithError 未调用
【发布时间】:2011-10-20 16:30:57
【问题描述】:

我正在使用 NSURLConnection 从服务器加载数据。因此,在我的 Iphone 应用程序中有一个按钮,当单击此按钮并连接互联网时,数据将成功加载。但后来当我在 Mac 上关闭互联网连接,然后再次单击该按钮时,没有调用 didFailWithError 方法,而是调用了其他方法,例如 didReceiveResponse、connectionDidFinishLoading。

以前有人遇到过这种问题吗?或者有人知道这个问题的原因吗?

非常感谢任何 cmets、建议和解决方案。谢谢。

【问题讨论】:

  • 连接中断后您收到了什么样的响应?
  • 你确定你的连接不可用。禁用网络后在浏览器中检查

标签: iphone objective-c cocoa-touch ios4 ios-simulator


【解决方案1】:

在更改代码中的任何行之前,请先尝试使用 4.3 模拟器和 5.0 进行相同的测试。

我尝试过类似的方法(对 URL 的请求和连接已关闭且没有响应),并使用 4.3,调用了 didFailWithError。在 5.0 中,我得到一个带有状态码 200 OK (!)didReceiveResponse,然后是 connectionDidFinishLoading。相同的代码,相同的请求,不同的操作系统版本......

【讨论】:

    【解决方案2】:

    奇怪的行为,特别是因为您关闭了互联网,但委托仍然要求** connectionDidFinishLoading** 这怎么可能?您还写了“点击此按钮时 互联网连接已连接”您的代码仍然在没有互联网的情况下启动连接?

    有可能,您使用缓存数据进行了配置,这就是您出现这种奇怪行为的原因。

    *nix 系统默认情况下在 BSD 套接字上的连接超时,这可能不会告诉你什么连接丢失了。但我认为 Mac OS/iOS 是为这种情况配置的。

    【讨论】:

    • 您好,“当点击此按钮并连接互联网时”是指当用户点击该按钮时,当互联网连接时,将从服务器加载数据.对于“*nix 系统默认情况下在 BSD 套接字上的连接超时,这可能不会告诉你什么连接丢失了。但我认为 Mac OS/iOS 是为这种情况配置的。”。你能解释一下吗?那么您对这个问题有什么解决方案或建议吗?
    • 我可能会建议使用计时器,它会查看标志,该标志保存有关何时收到最后一个数据的信息,如果超时,则终止连接并通知错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多