【问题标题】:Flutter: How to get Response from a url after the webpage is finished loading?Flutter:网页加载完成后如何从 url 获取响应?
【发布时间】:2021-01-17 21:25:20
【问题描述】:

我想从我的颤振代码中的 dio get 请求中读取网站的 HTML。该网站接受输入,对于我的情况,在 URL 中并加载一段时间,然后显示从后端接收到的所有数据。因为解析我的请求并获取并显示需要时间,所以我的dio请求只显示了网站的一半,而另一半则没有显示,因为它尚未获取。我需要帮助才能让它等待或如何获得另一半。

这是我的代码:

 BaseOptions options = new BaseOptions(
      connectTimeout: 10000,
      receiveTimeout: 10000,
    );
    Dio dio = new Dio(options);
    String url = 'https://x.com/?url=https://x.x.x/x/';

    try {
      final response = await dio.get(url);
      print(response.data);
      final document = parse(response.data);
      final downloadPage = document.getElementsByClassName('results-list');

      for (Element resultsAll in downloadPage) {
        final downloadLinks =
            resultsAll.getElementsByClassName('download-link');
        print(resultsAll.classes.toString());
      }
    } catch (e) {
      print(e);
    }

【问题讨论】:

    标签: flutter https xmlhttprequest flutter-layout dio


    【解决方案1】:

    我认为问题不在于您的代码,而在于您尝试加载的网站。您正在使用的包正在等待服务器返回一个 HTTP 响应代码(在大多数情况下成功为 200),然后它正在关闭未来并返回来自服务器的响应。

    我猜您的情况是您尝试加载的页面在加载初始页面后使用 JavaScript 加载其他内容。类似于 Facebook、Instagram 和其他网站可以无限滚动浏览的方式。

    要解决这个问题,您将无法使用基于请求的包来提取数据,而是使用更符合 Web View 包的东西。这样的包会像在浏览器中加载一样加载站点,然后您就可以从视图中读取数据。

    你可以看这里,例如:https://medium.com/@janithsg/flutter-extract-web-page-html-content-from-webview-1c39e43e675d

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多