Java 重新启动-将列表作为QueryParam传递

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,

我有一个REST服务,它接受许多查询参数,其中包括字符串列表。我使用restasured来测试这个REST服务,但是在将列表传递给服务时遇到了一些问题

我的休息服务:

@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();