我希望能够在运行时动态地获取传递给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一样?
答案 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参数。