【问题标题】:Get json from webview从 webview 获取 json
【发布时间】:2021-08-11 14:01:05
【问题描述】:
我有一个 wordpress 网站。我从它的 post rest api url "/wp-json/wp/v2/posts?orderby=date&order=desc" 获取 json 数据。
但对我来说主要问题是该网站使用 Cloudflare Under Attack 模式,因此用户第一次访问时可以看到挑战屏幕。所以如果我尝试在flutter中使用一些http客户端,比如“http”,我就无法获取数据。
所以我试图在开始时加载一个不可见的 webview 并从 webview 加载 json 数据,然后将该数据转换为 json,然后将显示在列表中。
但问题是我无法从 webview 获取 json 数据,因为我是 Flutter 的新手,所以请帮助我。
提前谢谢你。
【问题讨论】:
标签:
json
wordpress
flutter
dart
wordpress-rest-api
【解决方案1】:
给你一个例子。如果您有页面的字符串内容,您可以启动初始 url Uri.dataFromString 或者如果您有 url,您可以通过它。我可以使用 _controller.evaluateJavascript("document.documentElement.innerHTML") 这个方法来读取 WebView 页面的 html 响应。 webview_flutter: ^1.0.7 使用这个插件
@override
Widget build(BuildContext context) {
return Scaffold(
body: WebView(
initialUrl: new Uri.dataFromString(widget.d3sc, mimeType: 'text/html').toString(),
onWebViewCreated: (controller) {
_controller = controller;
},
javascriptMode: JavascriptMode.unrestricted,
gestureNavigationEnabled: true,
onPageFinished: (_) {
readResponse();
},
)
);
}
void readResponse() async
{
String paymentIdx;
String conversationIdx;
String conversationData;
List<String> liste;
setState(() {
_controller.evaluateJavascript("document.documentElement.innerHTML").then((value) async {
if(value.contains("name=\"paymentId\"")){
...........
................