【问题标题】:Use a List in http.get()在 http.get() 中使用列表
【发布时间】:2020-06-05 21:01:00
【问题描述】:

我创建了一个包含 URL 的列表。我想使用http.get() 来阅读这些网址。我尝试使用http.Client(),但我不知道要解析什么。

我的功能:

   List url = listear ; // <- URLS 
http.Response response = await http.get(url);
var document = parse(response.body);
var items = document.querySelector("body");
setState(() {
  valueee = items.innerHtml;
});

【问题讨论】:

标签: flutter dart


【解决方案1】:

多次使用您的 get 方法,每次请求如下:

...
var response = [];
for(final e in url){
  response.push(await http.get(e));
}
...

【讨论】:

    【解决方案2】:

    您可以将Future.wait()collection for 一起使用,如下所示:

    List<http.Response> results = await Future.wait([for(var url in urls) http.get(url)]);
    for (var result in results) {
      var document = parse(result.body);
      var item = document.querySelector("body");
      setState(() {
        valueee += item.innerHtml;
      });
    }
    

    【讨论】:

    • 我怎样才能使用 parse(来自 html/parser.dart)来做 document.outerHtml 或 results.querySelector
    • 我不知道这些包,但我相信你可以像以前一样在 for 循环中使用它们。我试图写一些可以帮助你的东西,但我真的不知道你想要达到什么目的。
    • 从 item.innerhtml 得到一个异常被调用为空。似乎项目或文档不返回任何值。
    【解决方案3】:

    感谢您的回答,我根据您的回答做了一个新功能。

      Future _initiate() async {
        List urls = [
          'https://stackoverflow.com/questions/60338520/use-a-list-in-http-get/60340538?noredirect=1#comment106745313_60340538',
          'https://stackoverflow.com/questions/60338520/use-a-list-in-http-get/60340538?noredirect=1#comment106745313_60340538'
        ];
        listii = [];
    for (var url in urls) {
      listii.add(await http.get(url));
    
      for (var result in listii) {
        var document = parse(result.body);
        setState(() {
          valueee = document.outerHtml;
          print(' ');
          print(valueee);
          print(' ');
        });
      }
    }
    
    
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 2015-07-08
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多