Java 重新启动-将列表作为QueryParam传递
我有一个REST服务,它接受许多查询参数,其中包括字符串列表。我使用restasured来测试这个REST服务,但是在将列表传递给服务时遇到了一些问题 我的休息服务:Java 重新启动-将列表作为QueryParam传递,java,rest,jersey,rest-assured,Java,Rest,Jersey,Rest Assured,我有一个REST服务,它接受许多查询参数,其中包括字符串列表。我使用restasured来测试这个REST服务,但是在将列表传递给服务时遇到了一些问题 我的休息服务: @GET @Consumes(Mediatyper.JSON_UTF8) @Produces(Mediatyper.JSON_UTF8) public AggregerteDataDTO doSearch(@QueryParam("param1") final String param1,
@GET
@Consumes(Mediatyper.JSON_UTF8)
@Produces(Mediatyper.JSON_UTF8)
public AggregerteDataDTO doSearch(@QueryParam("param1") final String param1,
@QueryParam("param2") final String param2,
@QueryParam("list") final List<String> list) {
当我打印url时,它如下所示:
final String json =
given().
param("param1", 2014).
param("param2", "something").
param("list", "item1", "item2").
when().
get("/search").
then().
statusCode(200).
extract().
body().asString();
当我在浏览器中尝试此url时,REST服务会正确地获得包含2个元素的列表。但是,当运行我的重启测试时,只会注意到后面的参数,给我一个包含1个元素(包含“item2”)的列表。您应该将REST-Assured升级到最新版本,因为我认为这是旧版本中的一个bug。您还可以指定如下参数:
final String json =
given().
param("param1", 2014).
param("param2", "something").
param("list", "item1", "item2").
when().
get("/search").
then().
statusCode(200).
extract().
body().asString();
您也可以尝试以下方法
RequestSpecification requestSpecifications = RestAssured.given();
//r.parameters()
Map<String , Object > map = new HashMap<String,Object>();
map.put("param1", 2014);
map.put("param2", "something");
List<String> paramList = new ArrayList<String>();
map.put("list",paramList );
final String json = requestSpecifications.parameters(map).
when().
get("/search").
then().
statusCode(200).
extract().
body().asString();
RequestSpecification RequestSpecification=RestAssured.given();
//r、 参数()
Map Map=newhashmap();
地图(2014年第1页);
映射放置(“param2”,“某物”);
List paramList=new ArrayList();
地图放置(“列表”,参数列表);
最终字符串json=requestSpecifications.parameters(映射)。
when()。
获取(“/search”)。
然后()。
状态代码(200)。
提取()。
body().asString();