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)中是不是存在值?