Java 当我使用查询参数注入数据时,Jax-rs-Jeresy客户机提供nul值
我刚刚接触JAX-RS。当我在客户端将查询参数与post请求一起使用时,它将返回空值。这是我的密码 资源Web服务代码: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
@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)