java - 放心 -> 如何传递具有数组项的查询参数或表单参数,以便所有选项都应该通过
问题描述
我有一个具有多个表单参数的请求。表单参数之一的格式如下:
"DistributionChoices": ["ABC.com", "JPQ.com", "N\A"]
当我使用 queryParams 进行发布请求并传递时:
queryParam.put("DistributionChoices", Arrays.asList("ABC.com", "JPQ.com", "N\A"));
或者
formParam("DistributionChoices", Arrays.asList("ABC.com", "JPQ.com", "N\A"));
然后它只选择第一个值,即:ABC.com
该字段是一个接受所有值的多项选择。
如何传递此参数中的所有值?
注意:在邮递员中,如果我这样传递它,它工作正常:
"DistributionChoices": ["ABC.com", "JPQ.com", "N\A"]
语言:Java 框架:RestAssured 和 TestNG
代码:
List<String> items = Arrays.asList("ABC.com", "JPQ.com", "N\A");
RestAssured.base = "baseURI";
Map<String, Object> queryParams = new HashMap<>();
queryParams.put("apiKey","apiKeyValue");
queryParams.put("name","nameValue");
queryParams.put("description","descriptionValue");
queryParams.put("distrbutionChoice",items); // Here is the issue
RestAssured.given().params(queryParams);
Response response = request.when().post();
输出:这从项目列表中获取第一个值。
解决方案
目前尚不清楚它需要发送的确切格式是什么,
但快速猜测是:DistributionChoices=["ABC.com", "JPQ.com", "N\A"]
.
因此,为了将列表解析为这种格式,请执行以下操作:
var value = "[\"" + String.join("\", \"", Arrays.asList("ABC.com", "JPQ.com", "N\\A")) + "\"]";
queryParam.put("DistributionChoices", value)
这只是在此列表中的每个单词之间添加一个逗号,并将它们括在括号中。(JSON 格式)
推荐阅读
- java - 从 LocalDateTime 类获取时间值不会编译
- ruby-on-rails - Rails : Controller/Create - 如何编写 if create 成功
- c++ - 即使列表已填满,std::list::empty() 也会返回 true
- javascript - Google Script GetRange 与基于列中的值的过滤器并仅选择某些列
- arrays - 空手道 - 如何检查数组是否包含值?
- node.js - ActivatedRoute.params.subscribe 调用了两次
- python - 如何在熊猫分配中动态地给出列名
- python - 从 numpy 数组中的大字符串中获取子字符串
- office365 - 如何在使用 word 插件时使用 office js API 或任何其他方式保存带有文件名的 word 文档?
- html - CSS调整百分比宽度不限制图像大小