如何从Java REST服务中的POST请求负载中检索值?

问题描述:

我想从AngularJS应用程序发送一个请求。 我打电话如何从Java REST服务中的POST请求负载中检索值?

var data = {name: "Dave", age: 18}; 
$http.post(serviceAddress + 'cxf/addPerson', data}; 

的Java CXF方:

@POST 
public Response addPerson(@Context HttpServletRequest request) { 
    String name = request.getParameter("name"); 
    int age = Integer.parseInt(request.getParameter("age")); 
    . . . 
} 

我得到空的名字和年龄,并request.getParameterMap是空的为好。

如何从请求有效载荷中获取此值?我的Chrome开发人员工具称它会在请求有效内容中发送名称和年龄。所以服务器应该检索它。

IOUtils.toString(request.getReader()); 
+0

你应该添加一些信息,解释为什么 – Pau

一种更好的方式将数据传递到POST方法来发送JSON,然后转换成一个类(从http://www.mkyong.com/webservices/jax-rs/integrate-jackson-with-resteasy/采取的示例代码):

import javax.ws.rs.Consumes; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.Response; 

@Path("/json/product") 
public class JSONService { 

    @GET 
    @Path("/get") 
    @Produces("application/json") 
    public Product getProductInJSON() { 

     Product product = new Product(); 
     product.setName("iPad 3"); 
     product.setQty(999); 

     return product; 

    } 

    @POST 
    @Path("/post") 
    @Consumes("application/json") 
    public Response createProductInJSON(Product product) { 

     String result = "Product created : " + product; 
     return Response.status(201).entity(result).build(); 

    } 

} 

有一些样品中GIT中 - >https://github.com/apache/cxf

git clone [email protected]:apache/cxf.git 
cd apache-cxf-3.1.11-src/distribution/src/main/release/samples/ 

的./distribution/src/main/release/samples目录。