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()中间件
- Java Spring项目确保使用
内容的提问来源于stack exchange,提问作者JSnow
相关产品推荐
相关产品推荐

