gpt4 book ai didi

nsurlconnection - 为什么 NSURLConnection 会产生这个错误, NSPOSIXErrorDomain "Operation Cancelled"?

转载 作者:行者123 更新时间:2023-12-04 07:09:48 29 4
gpt4 key购买 nike

在 iOS 9 中,我将 NSURL 与 NSURLConnection 一起使用,对于一个特定的 URL,它在 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error委托(delegate)方法。

Error Domain=NSPOSIXErrorDomain Code=89 "Operation canceled" UserInfo={NSErrorFailingURLStringKey=URL, _kCFStreamErrorDomainKey=1, NSErrorPeerAddressKey={length = 16, capacity = 16, bytes = 0x100201bb41d733370000000000000000}, _kCFStreamErrorCodeKey=89, NSErrorFailingURLKey=URL}

请求没有被取消,至少我们的代码没有。奇怪的是,这里的错误甚至不是 NSURLErrorDomain,而是 NSPosixErrorDomain。

该领域的一位用户报告了一个问题,这是根本原因,但很难确定发生这种情况的确切原因。在 OS X 上使用 curl 访问这个特定的 URL(使用相同的请求,User-Agent 和所有),不会产生这个错误,响应完全符合预期。然而,即使从 iOS Safari 浏览器访问这个特定的 URL 仍然不起作用。可能有一些奇怪的服务器配置,但我不希望错误如此普遍,比如已取消。

据报道,iOS 8 不会出现这种情况。此 URL 没有任何异常,只是它似乎无法通过我们的堆栈。除了 didFailWithError 之外,不会发生身份验证挑战或任何类型的委托(delegate)回调,并且它会立即发生。还有其他人在 iOS 9 中看到过这种行为吗?

更新:似乎产生此错误的特定 URL 不仅限于我们的应用程序。事实上,在 iOS 9 的 iOS Safari 中简单地尝试访问这个特定的 URL 会产生同样的错误。我设法在 iOS Safari 中的 iOS 8.3 上对此进行了测试,但没有重现错误。

最佳答案

这可能是 ATS 问题吗?对于链接到 iOS 9 SDK 的应用程序,iOS 9 使用更严格的规则来确定它将接受什么类型的 TLS 证书,以及它将允许什么 TLS 协议(protocol)(例如不再有 SSLv3)。此外,它要求所有请求都是 HTTPS(而非 HTTP)。

您可以覆盖此行为(如果必须)或修复服务器。

有关详细信息,请参阅 Apple 的 Info.plist documentation .

如果这没有帮助,请尝试启用 CFNetwork 调试,如 QA 1887 中所述看看它吐出什么。

关于nsurlconnection - 为什么 NSURLConnection 会产生这个错误, NSPOSIXErrorDomain "Operation Cancelled"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33790260/

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