Java Jax-R在运行时动态获取POST参数,如GET

时间:2016-11-01 22:14:16

标签: java jax-rs

我希望能够在运行时动态地获取传递给POST请求的参数,就像使用GET一样。

我需要的参数是由传递的参数之一定义的,在阅读之前我无法知道它们是什么。

示例:

如果我将请求传递给param" type = player",我可以推断出传递给此请求的其他参数是" id"并且"名称",但在我阅读"类型"之前我无法知道。 PARAM。

在另一种情况下,参数" type = item"可能会通过,然后我可以推断出其他参数通过了#34;数量"和"质量"。

当我使用GET时,我可以使用request.getParameter(" type")然后了解我正在寻找的其他参数(请求是HttpServletRequest)。 例如做类似的事情:

if (request.getParameter("type") == "player") {
   doSomething(request.getParameter("id"), request.getParameter("name"))
}
else if (request.getParameter("type") == "item") {
   doSomethingElse(request.getParameter("quantity"), request.getParameter("quality"))
}

然而,当我使用POST时,从我到目前为止所阅读的内容来看,我必须定义我希望事先传递的参数。

例如,如果POST使用JSON,我必须在构造函数中指定一个编译的Java对象,一旦发出请求,JSON将被解析。

由于Java对象是在编译时定义的,所以我无法动态接受和推导出不同的参数。

有没有办法动态访问传递给POST的参数,就像使用GET一样?

1 个答案:

答案 0 :(得分:1)

通过这样做很容易获得全身:

@POST
public Response go(String requestBody) throws IOException {
    //parse the variable requestBody to get the parameters... 
}

String变量requestBody的值包含所有POST主体。

然而为了方便你的生活泽西提供:

@POST
@Consumes("application/x-www-form-urlencoded")
public void post(MultivaluedMap<String, String> formParams) {
    // Store the message
}

地图formParams中的键是您的表单POST参数。