【问题标题】:Dart/Flutter: Quickly check list of links for 404Dart/Flutter:快速检查 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}');
        }
      }
    }

【问题讨论】:

    标签: flutter dart http


    【解决方案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}');
        }
    }
    

    【讨论】:

    • 谢谢艾米特。您的解决方案效果很好。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多