当前位置: 首页 > 知识库问答 >
问题:

Dart Http POST与重复的密钥形式

车子平
2023-03-14

我使用超文本传输协议/http.dart试图像这样发布多部分/表单数据:

Version: "1.0"
Token: "xxxxxxxxxx"
Ids: "1"
Ids: "2"
Ids: "3"

问题是Dart接受不允许重复键的映射体。我能想到的最好方法是将“Ids”键包装为数组。不幸的是,我不能与Web服务器开发团队谈判,所以,我唯一的选择是使用给定的API。

有人对这个问题有什么建议吗?

共有3个答案

公良向阳
2023-03-14

我在这里找到了解决方案:Flutter发布api发送多个具有相同名称参数的值

基本上只需在重复元素的名称后添加[$count]。

{
    "Version": "1.0",
    "Token": "xxxxxxxxxx",
    "Ids[0]": "1",
    "Ids[1]": "2",
    "Ids[2]": "3",
}

为我的案子工作。

吕晟睿
2023-03-14

这是https://github.com/dart-lang/http/issues/24. 同时,根据向请求或响应添加单个HTTP头的多个值的标准,大多数具有相同名称的HTTP头字段可以用逗号折叠在一起。在您的情况下,由于您的字段值可能不需要嵌入逗号,因此您可能应该能够:

await http.post(
  url,
  headers: {
    "Version": "1.0",
    "Token": "xxxxxxxxxx",
    "Ids": "1,2,3",
  },
  ...);
颜德馨
2023-03-14

最好的解决方案是在params映射中传递一个列表作为值。举个例子,

var baseUrl = 'example.com';
var path = 'posts';
var params = {
  'ids[]': ['1', '2', '3'],
  'x': 'false',
};

// http://example.com/posts?ids[]=1&ids[]=2&ids[]=3&x=false
var response = await http.get(Uri.http(baseUrl, path, params));

注意:列表中的元素必须是字符串,您可以使用,

list = list.map((e) => e.toString());
 类似资料:
  • 我找遍了,但没有找到是否可能。 我有一个MySQL查询: 字段id有一个“唯一索引”,所以不能有两个。现在,如果数据库中已经存在相同的id,我想更新它。但我真的必须再次指定所有这些字段吗,比如: 或: 我已经在插入中指定了所有内容。。。 一个额外的注意事项,我想使用周围的工作来获得ID! 我希望有人能告诉我什么是最有效的方法。

  • 问题内容: 在SQLAlchemy中有一种优雅的方法吗?我的意思是语法类似于? 问题答案: 现在,仅在MySQL的SQLAlchemy中内置了此功能。somada141的以下答案是最佳解决方案:https ://stackoverflow.com/a/48373874/319066 在SQL语句中 如果希望生成的SQL实际上包含,则最简单的方法涉及使用装饰器。 的代码(来自关于该主题的很好的螺纹连

  • 如果我在hashmap中输入一个键和值,并且基于键hashcode生成的索引大于15,并且映射大小仍然小于阈值(即12),会发生什么? 提前谢谢。

  • 问题内容: 我到处搜寻,但是没有找到可能。 我有这个MySQL查询: 字段ID具有“唯一索引”,因此不能有两个。现在,如果数据库中已经存在相同的ID,我想对其进行更新。但是我真的必须再次指定所有这些字段,例如: 要么: 我已经在插入中指定了所有内容… 需要特别说明的是,我想使用变通方法来获取ID! 我希望有人能告诉我最有效的方法是什么。 问题答案: 没有其他方法,我必须两次指定所有内容。首先是插入

  • 我一直在寻找将键绑定附加到JButton的答案,但仍然没有成功。我有以下由两个类组成的简单程序。我尝试了几种方法使用getInputMap()和getActionMap(),但都没有成功。我希望它执行以下操作:当我按键盘上的键“1”时,它会按JButton btn1,当我按键“2”时,它会按JButton btn2(因此JLabel上会出现1或2)。 //类1:// 更新:(我还没有15岁的名声,

  • 问题内容: 我有一个带有唯一主键列的表。有时,当我执行查询时会收到错误消息,因为该值已被使用。 我可以使用和捕获此特定错误吗? 问题答案: 看起来mysql为重复的主键抛出了1062错误代码。您可以检查sql异常的错误代码: 注意,这种方法不是跨数据库供应商的,因为不同的供应商对于重复的PK可能具有不同的错误代码。