Flutter中检查URL是否存在时出现错误。

3

我希望您能检查URL是否存在。

功能:

Future _checkUrl(String url) async {
  http.Response _urlResponse =  await http.get(Uri.parse(url));
  if (_urlResponse.statusCode == 200) {
   return true;
  }
  else {
    return false;
  }
}

调用:

_checkUrl("https://stackoverf").then((value) => {
  print(value)
});

当我输入 https://fonts.google.com/?category=Sans+Serif 时它有效(返回 true),或者输入 https://stackoverflow.com/qu 时也有效(返回 false)。

但是,当我尝试使用无效的网址 https://stackoverf 时,会出现错误信息:[ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: SocketException: Failed host lookup: 'stackoverf' (OS Error: No address associated with hostname, errno = 7)

如何使_checkUrl能够在这种情况下返回false呢?


你尝试过捕获异常而不是让它未处理吗? - jamesdlin
请参考此处:URL CHECK - gretal
1个回答

2
这个东西是否能满足你的需求?
Future<bool> _checkUrl(String url) async {
  try {
    http.Response _urlResponse =  await http.get(Uri.parse(url));
    return _urlResponse.statusCode == 200;
    // return _urlResponse.statusCode < 400 // in case you want to accept 301 for example
  } on SocketException {
    return false;
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接