我正在编写一个ios应用程序,它依赖于能够判断用户何时连接到wifi,以及当他或她连接或断开连接时,使用alamo fire发送异步请求。
我第一次连接时,我的异步成功。
但是,在我第一次连接后,任何 wifi 切换都会导致 404 错误。
我怀疑这是因为我在用户连接/断开连接后立即发送请求,这意味着他或她在短时间内没有互联网服务。
我的问题是,如果请求失败,我可以重复请求吗?或者是否可以“缓存”我想要发出的请求并等到用户有互联网连接后再发出请求?
最佳答案
有很多解决方案可以解决这个问题。一是再次递归调用download方法,实现错误自动重试机制:
func downloadSomething() {
Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
.response { request, response, data, error in
if let error = error {
log(error)
self.downloadSomething() // recursive call to downloadSomething
} else {
// do something on success
}
}
}
您可以通过以下方式扩展:
- 还向用户显示另一个 View ,询问他是否要重试 在重试下载之前是否下载。 (取决于您的 针对网络错误的 UI 策略)
- 指定的自动重试次数,然后询问用户。
- 检查错误状态代码,然后根据代码执行以下操作 不同的网络错误处理策略...
- 等等...
关于ios - 异步请求如果失败了怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36673065/