【发布时间】:2021-04-09 17:34:45
【问题描述】:
我需要用我的 post 方法发送一个大对象。但它一直给我错误。
Future getResults() async {
var res = await http.post('$SERVER_IP/api/anything/search',
headers: {'Authorization': token, "Accept": "application/json"},
body: {
"name": "",
"type": "",
"organization": "",
"state": "CA",
"appliesTo": {
"Camp": "true",
"Fees": "false",
"Lessons": "false",
},
}).catchError((e) => print({"error": e}));
return json.decode(res.body);
}
我意识到 body 只接受 Map
Future getResults() async {
var res = await http.post('$SERVER_IP/api/anything/search',
headers: {'Authorization': token, "Accept": "application/json"},
body: {
"name": "",
"type": "",
"organization": "",
"state": "CA",
"appliesTo": json.encode({
"Camp": "true",
"Fees": "false",
"Lessons": "false",
}),
}).catchError((e) => print({"error": e}));
return json.decode(res.body);
}
之后它起作用了,我得到了一个返回的数据。但是我的服务器忽略了整个“appliesTo”对象。所以我没有得到预期的数据。这不是我的服务器的问题。我用邮递员测试了它。这个颤动的 http 帖子没有发送正确的 json 正文。 所以我的问题是如何将大物体附加到身体上?在对象中间使用 json.encode 错误吗?正确的做法是什么?谁能帮忙? PS:我用 json.encode 包裹了整个地图,它给了我错误
【问题讨论】:
-
如果您显示错误会有所帮助。
-
你的意思是当应用停止时?它类似于“Map
在 Map 中不可接受。这是我没有使用 json.encode 的时候。但现在我正在获取数据。但我的后端忽略了 json.encode 中的内容. 所以,我得到了不同的结果。 -
那么,我真正想知道的是如何在http.post 中添加这种大对象?在中间使用 json.encode 是错误的方法吗?