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
相关产品推荐
相关产品推荐

