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

Flutter中如何在POST请求中传递JsonArray?请求报Bad Request错误的解决方法

解决API请求返回'Bad Request'的问题

看起来你遇到的问题根源在于错误地对字符串模板进行了二次JSON编码,导致最终发送给API的请求体格式完全不符合要求。咱们一步步来修正:

问题分析

你当前的代码先手动拼接了一个带变量占位符的字符串,然后又用jsonEncode()去编码这个字符串——这会把整个字符串转成一个JSON字符串字面量(相当于给原本的JSON又套了一层引号和转义符),API自然无法解析,所以返回Bad Request。

修正方案

正确的做法是先构建对应的对象结构,再对这个对象进行JSON编码,这样才能得到API需要的合法JSON格式:

// 先定义变量(确保是数字类型,不是字符串)
const userId = 238;
const tenantId = 9999;

// 构建符合要求的对象结构
const data = {
  criteriaList: [
    { key: "UserId", value: userId, match: "ExactMatch" },
    { key: "TenantOid", value: tenantId, match: "ExactMatch" }
  ]
};

// 对对象进行JSON编码,得到正确的请求体
const body = JSON.stringify(data); // 假设你的jsonEncode对应JSON.stringify,如果是其他语言/http库同理

额外检查点

除了请求体格式,你还可以确认以下几点:

  • 确保请求头设置了Content-Type: application/json,告诉API你发送的是JSON格式数据
  • 确认userId和tenantId的类型是否符合API要求(比如API要求数字,就不要传字符串)
  • 验证最终生成的body是否和你预期的请求内容一致:
    {"criteriaList":[{"key":"UserId","value":238,"match":"ExactMatch"},{"key":"TenantOid","value":9999,"match":"ExactMatch"}]}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:47:50