【问题标题】:Post List <int> in http Flutter在 http Flutter 中发布列表 <int>
【发布时间】:2023-04-09 19:30:01
【问题描述】:

我想发送这样的数据:

{
    "ad_title": "test",
    "year": "2019",
    "class": "Highline",
    "files": [ 212]
}

Flutter 中的 api。我试着这样做

var data = {
        "year": selectedYear,
        "class": _classController.text.toString(),
        "files": json.encode(carfilesids),
    };

     final response = await http.post(url, body: data,headers:  
      {'Accept': 'application/json'});

但是在运行时没有错误,当我打印 json.encoder.convert(carfilesids) 的值时,它给了我列表,我得到一个响应状态代码 422,它告诉我“{”message“:”给定的数据无效。","errors":{"files":["文件必须是数组。"]}}"。我也尝试过 json.encode 整个数据,但它与其他数据属性出错。

【问题讨论】:

  • 问题来自你的服务器,检查它是否以正确的方式读取数据。
  • 您还需要对数据进行 JSON 编码。将 body 参数从 body: data 替换为 body: json.encode(data) 而不需要 json.encode files
  • 我尝试为文件和数据添加 json.encode 但没有成功

标签: json api flutter dart


【解决方案1】:
final response = await http.post(url,
  body: {
    "ad_title": "test",
    "year": "2019",
    "class": "Highline",
    "files": [ 212 ]
  },
  headers: {
    'Accept': 'application/json'
  }
);

【讨论】:

  • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案以添加解释并说明适用的限制和假设。另外,请考虑整理您的代码格式。
【解决方案2】:

您必须在地图上使用jsonEncode,否则http 包会将其视为表单数据。

来自documentation

如果bodyMap,则使用encoding 将其编码为表单字段。请求的内容类型将设置为"application/x-www-form-urlencoded";这不能被覆盖。

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多