gpt4 book ai didi

ios - Error Domain=NSURLErrorDomain Code=-1004 而不是 Swift 服务调用中的 -1009

转载 作者:可可西里 更新时间:2023-11-01 17:33:55 39 4
gpt4 key购买 nike

通常,在 iOS 中使用 dataTaskWithRequest 或 sendAsynchronousRequest 执行 GET 或 POST 调用时,我们会遇到网络相关错误,错误代码如下,

  • NSURLErrorNotConnectedToInternet = -1009
  • NSURLErrorCannotConnectToHost = -1004
  • NSURLErrorTimedOut = -1001

在我的例子中,我正在断开互联网连接并执行服务调用。因此,预期的错误代码是 "NSURLErrorNotConnectedToInternet = -1009"。但是,它抛出 "NSURLErrorCannotConnectToHost = -1004" 如下所示,

Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the 
server." UserInfo=0x1700f0e00 {NSUnderlyingError=0x170255e70 "The
operation couldn’t be completed. (kCFErrorDomainCFNetwork error
-1004.)", NSErrorFailingURLStringKey=https://example.com/reg,
NSErrorFailingURLKey=https://example.com/reg, _kCFStreamErrorDomainKey=1,
_kCFStreamErrorCodeKey=51, NSLocalizedDescription=Could not connect to the server.}

那么,如何在使用 dataTaskWithRequest 或 sendAsynchronousRequest 时获取准确的错误状态。

最佳答案

通常,IIRC,操作系统仅在两种情况下发送“未连接到 Internet”:

  • 网络在以下情况下被确定为无法运行:
    • 一个或多个 URL 请求失败并且
    • 操作系统尝试探测一个众所周知的强制门户检测 URL 和
    • 该请求也失败了
  • 没有接口(interface)有IP地址
    • 包括任何已连接的 VPN
    • 排除环回接口(interface)

在系统达到该状态之前,您看到的故障将是“无法连接到主机”,因为这是操作系统确定知道的所有信息。

通常,您的应用应该以相同的方式解释这些 - 通过使用可达性来确定何时重试,然后在可达性发生变化时重试。

关于ios - Error Domain=NSURLErrorDomain Code=-1004 而不是 Swift 服务调用中的 -1009,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37208917/

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