当我使用查询参数注入数据时,Jax-rs Jersey 客户端给出空值
Jax-rs Jeresy client gives nul values when I use query params to inject data
我是 JAX-RS 的新手。当我在客户端中将查询参数与 post 请求一起使用时,它返回空值。这是我的代码。
资源网络服务代码:
@Path("/user")
public class JSONService {
@POST
@Path("/add")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response addUser(
@QueryParam("name") String name,
@QueryParam("age") int age) {
return Response.status(200).entity("addUser is called, name : " + name + ", age : " + age).build();
}
}
客户代码:
try {
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/simpleweb/rest/user").path("/add");
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add("name", "arunkumar");
queryParams.add("age", "25");
ClientResponse response = webResource.type(MediaType.APPLICATION_FORM_URLENCODED).post(ClientResponse.class,queryParams);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println("============getCtoFResponse============");
System.out.println(output);
} catch (Exception e) {
e.printStackTrace();
}
}
输出是:
============getCtoFResponse============
addUser 被调用,姓名:null,年龄:0
请帮帮我 issue.Thanks
使用 @FormParam
而不是 @QueryParam
。后者用于 URL 中的查询字符串 key/value 对,例如/url?name=blah&age=2
。 @FormParam
用于 application/x-www-form-urlencoded
实体数据,这就是您要发送的内容
我是 JAX-RS 的新手。当我在客户端中将查询参数与 post 请求一起使用时,它返回空值。这是我的代码。
资源网络服务代码:
@Path("/user")
public class JSONService {
@POST
@Path("/add")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response addUser(
@QueryParam("name") String name,
@QueryParam("age") int age) {
return Response.status(200).entity("addUser is called, name : " + name + ", age : " + age).build();
}
}
客户代码:
try {
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/simpleweb/rest/user").path("/add");
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add("name", "arunkumar");
queryParams.add("age", "25");
ClientResponse response = webResource.type(MediaType.APPLICATION_FORM_URLENCODED).post(ClientResponse.class,queryParams);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println("============getCtoFResponse============");
System.out.println(output);
} catch (Exception e) {
e.printStackTrace();
}
}
输出是:
============getCtoFResponse============ addUser 被调用,姓名:null,年龄:0
请帮帮我 issue.Thanks
使用 @FormParam
而不是 @QueryParam
。后者用于 URL 中的查询字符串 key/value 对,例如/url?name=blah&age=2
。 @FormParam
用于 application/x-www-form-urlencoded
实体数据,这就是您要发送的内容