Java 当我使用查询参数注入数据时,Jax-rs-Jeresy客户机提供nul值

Java 当我使用查询参数注入数据时,Jax-rs-Jeresy客户机提供nul值,java,web-services,rest,jax-rs,restful-architecture,Java,Web Services,Rest,Jax Rs,Restful Architecture,我刚刚接触JAX-RS。当我在客户端将查询参数与post请求一起使用时,它将返回空值。这是我的密码 资源Web服务代码: @Path("/user") public class JSONService { @POST @Path("/add") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.APPLICATION_JSON) public Response addUser( @Qu

我刚刚接触JAX-RS。当我在客户端将查询参数与post请求一起使用时,它将返回空值。这是我的密码

资源Web服务代码:

@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();
        }
    }
试试看{
Client=Client.create();
WebResource WebResource=client.resource(“http://localhost:8080/simpleweb/rest/user路径(“/add”);
MultivaluedMap queryParams=新的MultivaluedMapImpl();
添加(“名称”、“arunkumar”);
添加(“年龄”、“25”);
ClientResponse response=webResource.type(MediaType.APPLICATION\u FORM\u URLENCODED).post(ClientResponse.class,queryParams);
if(response.getStatus()!=200){
抛出新的RuntimeException(“失败:HTTP错误代码:+response.getStatus());
}
字符串输出=response.getEntity(String.class);
System.out.println(“======================getCtoFResponse=========================”);
系统输出打印项次(输出);
}捕获(例外e){
e、 printStackTrace();
}
}
输出为:

================getCtoFResponse============ 已调用addUser,名称:null,年龄:0


请在这个问题上帮助我。谢谢使用
@FormParam
而不是
@QueryParam
。后者用于URL中的查询字符串键/值对,例如
/URL?name=blah&age=2
@FormParam
用于
应用程序/x-www-form-urlencoded
实体数据,这是您试图发送的数据

如果我作为QueryPartners发送,我可以使用哪种类型的MediaType?没关系。介质类型仅适用于主体。查询参数在URL中,所以这无关紧要。如果要使用
@QueryParam
,则在客户端可以使用
webResource.QueryParam(String,String)
queryParams(MultivaluedMap)