如何在HTTP请求正文中发送布尔值或整数值?

时间:2019-10-17 11:09:05

标签: http flutter dart

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

2 个答案:

答案 0 :(得分:0)

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

使用utf-8(或由内容类型标头指定的其他某种编码)将字符串转换为字节,从而将字符串转换为字节。

字符串到字符串的映射首先编码为x-www-form-urlencoded,然后编码为字节。当然,这种编码只能编码字符串。

因此,对您问题的答案实际上取决于服务器希望在何处/如何接收字段。如果期望它们以某种形式存在,那么您有责任将布尔值转换为服务器期望的任何字符串。也许是'true'/'false'或'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
};

还要考虑服务器需要完全不同的编码(例如JSON)的可能性。然后,您可以将地图转换为JSON,然后将其作为字符串传递,并适当地设置内容类型。

答案 1 :(得分:0)

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

  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);
    });
  }