Flutter:使用http.get获取数据

时间:2019-01-25 12:59:31

标签: android dart flutter

我正在开发一个使用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
  }
}

1 个答案:

答案 0 :(得分:0)

此行

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

如果失败将抛出异常。

在您的代码中,它假定响应成功,并返回http状态代码。 状态代码只能在http服务器出现错误时告诉您,而在连接出现错误时不会告诉您。拥有404状态代码意味着http服务器找不到您要查找的内容,但是没有表示已建立连接。

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

由于该行引发了未捕获的异常,因此逻辑上该方法的其余部分未执行。您可能应该将其包装在try catch子句中,以处理设备处于脱机状态的实例。