我正在尝试通过 POST 向 RestAssured 端点提交一些 JSON。 API 需要一个 key 列表。我需要发送的值是一个包含单个项目的列表。
理想的请求如下:
Request method: POST
Request path: http://localhost:8080/registrionURL
Request params: <none>
Query params: <none>
Form params: paramKey=[param space]
Path params: <none>
Multiparts: <none>
如果我将参数添加为列表或 map ,它仍然只是将参数作为字符串发送:
String paramKey = "paramKey";
String paramWithSpace = "param space";
Response response = RestAssured.given()
.formParam(paramKey, new String[]{paramWithSpace})
.and().contentType("application/json")
.log().method().log().path().log().parameters()
.when().post(MessageFormat.format(registrationUrl, testName));
输出:
Request method: POST
Request path: http://localhost:8080/registrionURL
Request params: <none>
Query params: <none>
Form params: paramKey=param space
Path params: <none>
Multiparts: <none>
看来正常的方法是多次调用 .formParam()
来创建列表:
String paramKey = "paramKey";
String paramWithSpace = "param space";
Response response = RestAssured.given()
.formParam(paramKey, paramWithSpace)
.formParam(paramKey, paramWithSpace)
.and().contentType("application/json")
.log().method().log().path().log().parameters()
.when().post(MessageFormat.format(registrationUrl, testName));
输出:
Request method: POST
Request path: http://localhost:8080/registrionURL
Request params: <none>
Query params: <none>
Form params: paramKey=[param space, param space]
Path params: <none>
Multiparts: <none>
有人知道如何发送长度为 1 的列表作为表单参数吗?
最佳答案
如果将表单参数作为 List
传递,它会起作用:
.formParam(paramKey, Arrays.asList(paramWithSpace))
关于java - 使用 RestAssured 将一项列表作为 formParam 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41753083/