You need to enable JavaScript to run this app. POST请求在Postman可正常调用但Flutter运行返回400错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

POST请求在Postman可正常调用但Flutter运行返回400错误如何解决

问题原因

核心问题为请求体编码格式与后端接口预期不匹配:

  • 你的Flutter代码中将参数做了JSON序列化,请求头声明为application/json格式,但根据你提供的Postman请求配置,接口实际要求接收表单格式(x-www-form-urlencoded/form-data)的参数,后端无法解析JSON格式的请求体,因此返回400错误。
  • 次要可能原因为user.email为空、参数名拼写错误,不符合后端校验规则。
解决方案

方案1:调整为表单格式传参(匹配Postman逻辑,优先选择)

无需对参数做JSON序列化,直接传入Map类型的参数,http/dio库会自动将其转为表单格式并匹配对应请求头,代码示例:

Future<String> loginUser(User user) async {
  // 直接传递键值对Map,不需要jsonEncode处理
  var body = {
    'strlogin': user.email,
  };
  final headers = {
    "Accept": "application/json",
  };
  Response response = await post(
    SeguriSignAPIURL.loginUser,
    headers: headers,
    body: body
  );

  if (response.statusCode == 200) {
    var decode = jsonDecode(response.body);
    return decode['token'];
  } else {
    // 建议新增该行打印后端返回的具体错误信息,方便后续排查其他问题
    print(response.body);
    print(response.reasonPhrase);
    return '';
  }
}

方案2:确认接口JSON传参支持

如果你确认后端接口支持JSON格式传参,可先打印user.email和序列化后的body值,排查是否存在参数为空、参数名拼写错误的问题,结合返回的response.body中的错误提示进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 18:36:03