java - 如何使用 RESTEasy 客户端将列表作为查询参数发送

标签 java rest jax-rs resteasy

我正在尝试使用 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]

最佳答案

问题解决了。我最近发布的代码运行良好。

错误的代码是:

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

如果我查看类 MultivaluedMapImpl 的代码,如果我使用“add”或“addAll”方法,我没有发现任何区别!!

关于java - 如何使用 RESTEasy 客户端将列表作为查询参数发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33241363/

相关文章:

java - Java EE 中的每个 REST 端点都应该是异步的吗?

java - Guice - 如何通过多个注入(inject)器/模块共享同一个单例实例

java - Java 中计算单词对的数据结构类型是什么?

Java 扫描器数组

java - 如何在另一个rest API java微服务中使用一个rest api的响应?

android - 如何在 Kotlin 中发出 API 请求?

Rest Service 看不到来自 Grails Rest Client Builder 的参数

eclipse - 关于从 eclipse 的 tomcat 服务器内部运行 maven 构建的 resteasy 项目的详细说明?

rest - 对于Java中的RESTful服务,JAX-RS是否比诸如Swing,Grails或Play的MVC框架更好?

java - 试图打开pdf文件Android