You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter WebView:loadRequest的body传参无效,如何正确传参?

问题解决:WebView传递参数到服务器为空的处理

方案1:GET方式传递参数(直接拼接URL)

如果服务器支持从URL查询参数获取值,直接把参数拼在URI末尾即可,这是最直接的方式:

Uri uri = Uri.parse('http://localhost:8080?a=1&b=2');

WebViewController controller = WebViewController()
       ..loadRequest(uri);
     
WebViewWidget(controller: controller);

服务器可直接从URL的查询字符串中读取a和b的参数值。

方案2:POST方式传递参数(需配置请求头与请求方法)

如果必须使用POST请求,你当前的代码存在两个问题:未指定POST请求方法、缺少请求头让服务器识别参数格式。修复代码如下:

Uri uri = Uri.parse('http://localhost:8080');
var body = Uint8List.fromList(utf8.encode('a=1&b=2'));

WebViewController controller = WebViewController()
       ..loadRequest(
         uri,
         body: body,
         method: WebViewRequestMethod.post, // 显式指定POST方法
         headers: {'Content-Type': 'application/x-www-form-urlencoded'}, // 告诉服务器参数格式
       );
     
WebViewWidget(controller: controller);

关键说明:

  • loadRequest默认使用GET方法,即使传了body,GET请求的body通常会被服务器忽略,所以必须显式指定method为POST。
  • 添加Content-Type请求头为application/x-www-form-urlencoded,让服务器按照表单编码格式解析请求体中的参数。

内容的提问来源于stack exchange,提问作者eastwater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:22:09