如何在http请求正文中发送布尔值或int值?

Moh*_*hit 7 http dart flutter

如何在 dart 中的 http 请求正文中发送布尔值或整数?文档说我只能发送字符串、列表或地图。如何使其适用于 Dart 中的布尔值或整数?

Moh*_*del 8

尝试我在项目中使用的这种方法

  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)


Ric*_*eap 3

正如您在文档中看到的,您只能发送这三个内容:字节数组、字符串或字符串到字符串的映射。事实上,最终你只是发送一个字节数组。其他选项在发送之前转换为字节。

通过使用 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,然后将其作为字符串传递,并适当设置内容类型。