如何将参数传递给HTTP POST

时间:2012-12-14 00:15:43

标签: java glassfish jersey httprequest

以下是我在RESTful Web服务中使用的代码片段。我正在向 create(Employee entity)方法发送JSON数据。我想从servlet请求中获取JSON数据。

我使用的System.out.println(..)方法被打印,这意味着 stringBuffer 不是NULL;但是在“:”字符之后没有任何内容被打印[我在glassfish记录器中检查这个]。除此之外,POSTed enitity正在持久地保存到数据库。

我已经在stackoverflow和其他网站上搜索了与此相关的许多问题,但到目前为止我没有尝试过任何工作。

public class EmployeeFacadeREST extends AbstractFacade<Employee> {
@Context private HttpServletRequest servletRequest;
@PersistenceContext(unitName = "EmployeePU")
private EntityManager em;

public EmployeeFacadeREST() {
    super(Employee.class);
}


@POST
@Override
@Consumes({"application/xml", "application/json"})

public void create( Employee entity) {
    StringBuffer stringBuffer = null;
    try{
        InputStream body = servletRequest.getInputStream();           
        stringBuffer = new StringBuffer();
        int d;
        while((d = body.read()) != -1){
            stringBuffer.append((char)d);
        }
    }

    catch(IOException e){

    }
    if(stringBuffer != null){
        System.out.println("the entity is: " + stringBuffer.toString()); // this line gets printed
    }
    super.create(entity);
}
// more code

}

非常感谢您的见解。

2 个答案:

答案 0 :(得分:2)

服务器已经使用了请求主体,以便自动将其反序列化为Employee实体。您无法再次读取相同的输入流。

答案 1 :(得分:0)

您需要将POST使用的'entity'设置为stringbuffer的值。

检查球衣/玻璃鱼POST的测试或样品。

POST.entity期望在POST正文中你想要的值。