【问题标题】:How to send boolean value or int value in a http request body?如何在 http 请求正文中发送布尔值或 int 值?
【发布时间】:2019-10-17 11:09:05
【问题描述】:

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

【问题讨论】:

  • 使用 Dio 插件,它是 Flutter 的强大 http 客户端
  • 没有插件的帮助,就没有别的选择了吗?
  • 您需要开始接受一些问题的答案。 (否则,你会发现人们不再回复他们......)

标签: http flutter dart


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    字符串到字符串的映射首先编码为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
    };
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      相关资源
      最近更新 更多