我正在尝试使用flutter webview plugin获取url内容源代码。我写这段代码是为了得到预期的结果,但我不知道为什么这段代码会返回意想不到的一行内容。
我的代码
import 'dart:async';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
const kAndroidUserAgent =
'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Mobile Safari/537.36';
class mainController{
Future getdata() async{
var data;
final flutterWebViewPlugin = FlutterWebviewPlugin();
flutterWebViewPlugin.launch('https://www.instagram.com/picsart/?__a=1', hidden: true, userAgent: kAndroidUserAgent,);
data = await flutterWebViewPlugin.evalJavascript("window.document.getElementsByTagName('html')[0].outerHTML;");
flutterWebViewPlugin.close();
return data;
}
}
我得到的输出
I/flutter (21310): "\u003Chtml>\u003Chead>\u003C/head>\u003Cbody>\u003C/body>\u003C/html>"
我所期待的是-
发布于 2021-06-19 21:27:41
我试了很久才得到答案。我找到了一种变通方法。下面是我找到的解决方案。
data = await flutterWebViewPlugin.evalJavascript("encodeURIComponent(document.documentElement.outerHTML)");
data = Uri.decodeComponent(data);
它所做的是,在引入组件之前用JavaScript对其进行编码。然后,解码dart中的数据。
当我使用webview_flutter插件时,它起作用了。可能它在这里也会起作用。
我知道我来晚了,但为那些可能有同样问题并最终来到这里的人补充答案。
发布于 2021-03-28 02:56:31
这是一个JSON数据馈送,不是一个网页。该插件试图做的是将页面视为网页,这将扰乱JSON数据格式。
按照Flutter食谱:https://flutter.dev/docs/cookbook/networking/fetch-data中的说明使用http
https://stackoverflow.com/questions/66834693
复制相似问题