如何使用 RESTEasy 客户端将列表作为查询参数发送
How send list as Query param using RESTEasy client
我正在尝试使用 RESTEasy 客户端调用服务发送列表作为查询参数:
服务:
@POST
@Path("/names")
public void getNames(@QueryParam("name") final List<String> names) {
}
客户:
final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>();
queryParams.add("name", "name1");
queryParams.add("name", "name2");
final ResteasyClient client = new ResteasyClientBuilder().build();
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);
final Builder builder = target.request();
builder.accept(MediaType.APPLICATION_JSON);
final Response response = builder.post(Entity.form(form));
当我调用 /names
端点时将有 1 个元素并且 names.get(0) == [name1, name2]
问题已解决。我post最近的代码运行良好
错误代码是:
final List<String, String> list = new ArrayList<>();
list.add("name1");
list.add("name2");
final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>();
queryParams.addAll("name", list);
final ResteasyClient client = new ResteasyClientBuilder().build();
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);;
final Builder builder = target.request();
builder.accept(MediaType.APPLICATION_JSON)
final Response response = builder.post(Entity.form(form));
如果我查看 class MultivaluedMapImpl 的代码,如果我使用 "add" 或 "addAll" 方法,我没有发现任何区别!!
我正在尝试使用 RESTEasy 客户端调用服务发送列表作为查询参数:
服务:
@POST
@Path("/names")
public void getNames(@QueryParam("name") final List<String> names) {
}
客户:
final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>();
queryParams.add("name", "name1");
queryParams.add("name", "name2");
final ResteasyClient client = new ResteasyClientBuilder().build();
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);
final Builder builder = target.request();
builder.accept(MediaType.APPLICATION_JSON);
final Response response = builder.post(Entity.form(form));
当我调用 /names
端点时将有 1 个元素并且 names.get(0) == [name1, name2]
问题已解决。我post最近的代码运行良好
错误代码是:
final List<String, String> list = new ArrayList<>();
list.add("name1");
list.add("name2");
final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>();
queryParams.addAll("name", list);
final ResteasyClient client = new ResteasyClientBuilder().build();
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);;
final Builder builder = target.request();
builder.accept(MediaType.APPLICATION_JSON)
final Response response = builder.post(Entity.form(form));
如果我查看 class MultivaluedMapImpl 的代码,如果我使用 "add" 或 "addAll" 方法,我没有发现任何区别!!