如何在 dart 中的 http 请求正文中发送布尔值或整数?文档说我只能发送字符串、列表或地图。如何使其适用于 Dart 中的布尔值或整数?
尝试我在项目中使用的这种方法
void apiPost(){
var body = jsonEncode(
{
"string":"test",
"bool":true,
"int":1
});
http.post("url here",body: body,headers: {"Content-Type": "application/json"}).then((response) {
Map map = json.decode(response.body);
});
}
Run Code Online (Sandbox Code Playgroud)
正如您在文档中看到的,您只能发送这三个内容:字节数组、字符串或字符串到字符串的映射。事实上,最终你只是发送一个字节数组。其他选项在发送之前转换为字节。
通过使用 utf-8(或内容类型标头指定的其他编码)将字符串转换为字节,即可将字符串转换为字节。
字符串到字符串的映射首先被编码为 as x-www-form-urlencoded,然后编码为字节。当然,该编码只能对字符串进行编码。
因此,您问题的答案实际上取决于服务器期望在何处/如何接收字段。如果它期望它们以某种形式存在,那么您有责任将布尔值转换为服务器期望的任何字符串。也许这是“真”/“假”或“1”/“0”或其他东西。让你的地图像这样:
int someInt;
bool someBool;
var formData = <String, String>{
'an_int_value' : someInt.toString(),
'a_bool_value' : someBool.toString(), // assuming 'true'/'false' is OK
};
Run Code Online (Sandbox Code Playgroud)
还要考虑您的服务器可能需要完全不同的编码,例如 JSON。然后,您可以将地图转换为 JSON,然后将其作为字符串传递,并适当设置内容类型。
| 归档时间: |
|
| 查看次数: |
18317 次 |
| 最近记录: |