通常,在iOS中使用dataTaskWithRequest或sendAsynchronousRequest执行GET或POST调用时,我们会使用错误代码来处理与网络相关的错误,例如,
在我的情况下,我正断开互联网并执行服务电话。因此,预期的错误代码是“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时获得确切的错误状态。
答案 0 :(得分:1)
作为一项规则,IIRC,操作系统仅在两种情况下发送“未连接到Internet”:
直到系统达到该状态,您看到的失败将是“无法连接到主机”,因为这是所有操作系统都知道的。
通常,您的应用应以相同的方式解释这些问题 - 使用可访问性来确定何时重试,然后在可达性更改时再次尝试。