我在我的应用程序中使用 AFNetworking 从网络服务连接/下载数据。该应用程序通过企业部署部署到不同位置的用户。在人们使用我们的应用程序的地点之一,WiFi 网络似乎会随机断开/在几秒钟内恢复。在这些情况下,要求是在放弃和失败之前重试请求三次。我的重试部分工作正常,但在检测网络故障时遇到一些问题。一些代码:
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:
^(AFHTTPRequestOperation *operation, id responseObject) {
[self parseResponse:operation.responseString];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self messageFailureWithCode:error.code
reason:[NSString stringWithFormat:@"%@", error]];
}
];
我重试的错误代码是NSURLErrorTimedOut
。但我刚刚收到另一个日志文件,该文件指示失败并出现以下错误:-1003“找不到具有指定主机名的服务器。”
我也可以将此代码添加到我的列表中,但我想确保我捕获了所有错误,而不仅仅是在错误出现时对其进行处理。我正在查看 NSURLError.h 文件,发现以下错误代码,模糊地看起来可能是由网络故障引起的。
有人可以帮我弄清楚在什么条件下会触发每个错误以及我是否缺少任何错误代码?名单如下:
NSURLErrorCannotFindHost
NSURLErrorTimedOut
NSURLErrorCannotConnectToHost
NSURLErrorNetworkConnectionLost
NSURLErrorDNSLookupFailed
NSURLErrorResourceUnavailable
NSURLErrorNotConnectedToInternet
谢谢,
泰贾。
最佳答案
听起来您可以安全地重试错误域为 NSURLErrorDomain
的每个失败(排除操作被取消的情况)。这应该涵盖所有这些情况。
关于ios - AFNetworking 与不可靠的 wifi - 检测/重试连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17223021/