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

Flutter客户端Http.post请求未向服务器传递请求体问题求助

问题描述

我使用如下代码向服务器发送请求体,但在服务器端接收到的请求体为空({})。我尝试添加注释中的请求头,但问题仍未解决,恳请各位提供帮助。

代码如下:

String bodyF =
          jsonEncode({"countryCode": "91", "phoneNumber": phoneValue});
      final response = await http.post(
        Uri.parse('http://localhost:8080/twilio-sms/send-otp'),
        // headers: <String, String>{
        //   'Content-Type': 'application/json',
        //   'Access-Control-Allow-Origin': '*'
        // },
        body: bodyF,
      );
解决方案
  • 必须设置正确的Content-Type请求头:用jsonEncode生成JSON字符串后,必须通过请求头告知服务器请求体是JSON格式,否则服务器无法正确解析。你之前注释掉这个头是问题的核心原因。
  • 移除无效的Access-Control-Allow-Origin头:这个是服务器响应时返回的头,前端发送请求时不需要设置,添加它对解决问题没有帮助。

修改后的代码:

String bodyF = jsonEncode({"countryCode": "91", "phoneNumber": phoneValue});
final response = await http.post(
  Uri.parse('http://localhost:8080/twilio-sms/send-otp'),
  headers: <String, String>{
    'Content-Type': 'application/json; charset=UTF-8',
  },
  body: bodyF,
);
  • 额外排查点:如果修改后服务器还是接收不到数据,检查服务器端是否配置了JSON请求体解析的相关处理逻辑,比如:
    • Java Spring项目确保使用@RequestBody注解接收参数,且配置了JSON解析器
    • Node.js Express项目确保添加了express.json()中间件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:22:05