【问题标题】:Flutter: fetch data with http.getFlutter:使用 http.get 获取数据
【发布时间】:2019-06-19 07:40:49
【问题描述】:

我正在开发一个使用 http.request 方法读取数据的应用程序。如果设备在线,一切正常,但如果设备离线,它就会失去我的功能。

我的代码是这样的:

_fetchPost() async {
  final response = await http.get('https://myUrl.com');
  //if the device is offline it jumps all the code below
  print("Hi"); //not printed
  if (response.statusCode == 200) {
     //do something
  } else {
     throw Exception('Failed to load'); //not throwed
  }
}

【问题讨论】:

    标签: android dart flutter


    【解决方案1】:

    这一行

    final response = await http.get('https://myUrl.com');
    

    如果失败会抛出异常。

    在您的代码中,它假定响应成功并返回一个 http 状态代码。 状态码只能告诉你http服务器什么时候出错,不能告诉你连接什么时候出错。有 404 状态码意味着 http 服务器找不到您要查找的内容,但 确实 表示连接已建立。

    如果您查看您的 Flutter 控制台,您可能会发现 unable to resolve host 的异常,考虑到您的设备无法访问互联网,这是有效的。

    由于该行引发未捕获的异常,因此该方法的其余部分未执行是合乎逻辑的。您可能应该将其包装在 try catch 子句中以处理设备离线的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 2021-07-19
      • 1970-01-01
      • 2017-11-20
      • 2019-11-22
      • 1970-01-01
      • 2021-01-30
      相关资源
      最近更新 更多