如果没有连接,为什么要调用swiftHTTP响应处理程序?

时间:2018-06-14 14:43:21

标签: ios swift httprequest

我使用 swiftHTTP 来请求我的服务器,当我的互联网连接速度很慢时,它会转到响应部分!我已经设置了以下示例代码:

HTTP.GET("myURL") { response in
  let myResponse = response.data // it comes here after the timeout
  if response.statusCode == 200 {
    //some code
  } else {
       do {
         let jsonError = try JSON(data: myResponse) // in this line it goes to catch because there is no data in myresponse
       } catch{
         //alert for not having connection
       }
}

如果没有响应,为什么要调用响应函数?
我的服务器也说,没有发送请求。

2 个答案:

答案 0 :(得分:1)

它没有"进入响应",它尝试按预期发出HTTP请求,无论成功与错误如何,都会调用它的完成处理程序。

返回的响应对象是一个对象,其中包含确定请求发生的所有信息。

因此它将包含超时状态代码(HTTP 408),可能是错误消息。如果它根本没有响应,您的应用程序将无法处理这些情况。

例如,假设您的用户点按了应用中的个人资料图标,这会发送获取用户个人资料的请求,但会超时。您是否希望用户等待,查看空白配置文件屏幕?抓住错误并优雅地处理它会好得多。在这种情况下,您可以向用户显示一条消息,告诉他们出现问题并关闭空的个人资料屏幕

答案 1 :(得分:1)

如果没有连接或连接非常糟糕,也会从swiftHTTP调用您的响应处理程序。
要解决此问题,请check if there is an internet connection或检查数据是否为零:< / p>

HTTP.GET("myURL") { response in
  let myResponse = response.data // it comes here after the timeout
  if response.statusCode == 200 || response.data == nil {
    //some code
  } else {
       do {
         let jsonError = try JSON(data: myResponse) // in this line it goes to catch because there is no data in myresponse
       } catch{
         //alert for not having connection
       }
}

这里的重要部分是检查response.data == nil