ios - 异步请求如果失败了怎么办?

标签 ios swift http asynchronous http-status-code-404

我正在编写一个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/

相关文章:

java - Http 服务器(Vertx 上的 Java)没有获取 POST 参数

php - gzcompress()随机插入额外的数据?

ios - 如何注册我的 iOS 应用程序以从 iOS 6+ 的邮件应用程序中打开 zip 文件?

objective-c - 为 app ios 创建一个设置 View

Swift 运算符 "*"在两个 Int 上抛出错误

ios swift 方形照片取景器

ios - 正确释放返回的 UIImage

ios - 追加字节数组

ios - 更改图标颜色选项卡栏 Controller -SWIFT

java - 如何模拟客户端中止请求?