Dart/Flutter:快速检查 404 链接列表

Posted

技术标签:

【中文标题】Dart/Flutter:快速检查 404 链接列表【英文标题】:Dart/Flutter: Quickly check list of links for 404 【发布时间】:2022-01-17 04:11:15 【问题描述】:

我正在构建一个使用外部服务的应用程序,该服务提供链接到 PDF 文档的 URL 列表。对于其中一些 URL,资源不存在 - 404。

我尝试构建以下内容以遍历 URL 列表并获取资源是否存在,但它运行缓慢 - 每个链接大约 100 毫秒到 500 毫秒秒。

任何人有任何建议如何快速判断资源是否存在?

    var client = http.Client();
    for (Article article in articles) 
      if (article.downloadUrl != null) 
        Uri url = Uri.parse(article.downloadUrl!);
        http.Response _response = await client.head(url);
        if (_response.statusCode == 404) 
          print('Bad - $article.downloadUrl');
         else 
          print('Good - $article.downloadUrl');
        
      
    

【问题讨论】:

【参考方案1】:

一个简单的加速方法是利用异步功能。这将允许它同时运行所有请求,而不是您的代码显示的一次一个。

var client = http.Client();
List<Future> futures = [];
for (Article article in articles) 
  if (article.downloadUrl != null) 
    Uri url = Uri.parse(article.downloadUrl!);
    futures.add(isValidLink(url));
  

await Futures.wait(futures);


Future<void> isValidLink(Uri url) async 
    http.Response _response = await client.head(url);
    if (_response.statusCode == 404) 
      print('Bad - $article.downloadUrl');
     else 
      print('Good - $article.downloadUrl');
    

【讨论】:

谢谢艾米特。您的解决方案效果很好。

以上是关于Dart/Flutter:快速检查 404 链接列表的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 Firebase 实时数据库(Dart/Flutter)中是不是存在值?

**已解决** 在 dart、flutter 应用程序中检查或连续收听互联网连接/网络连接

Dart / Flutter 嵌套类静态访问

Dart/Flutter 中的依赖关系图?

Dart / Flutter - 验证URL的字符串

如何在 Dart (Flutter) 中获取每个可迭代值的索引号