如何从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());
答
一种更好的方式将数据传递到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目录。
你应该添加一些信息,解释为什么 – Pau