我正在尝试将HTTP POST请求的所有参数收集到地图中,但它无法正常工作。
使用GET,我使用了:
@Context
private HttpServletRequest request;
和
@GET
@Path("/{uuid}/invoke/{method}")
public Response invokeMethod (
@PathParam("uuid") String uuid,
@PathParam("method") String methodz
) {
Map<String, String[]> params = request.getParameterMap();
它返回了地图。但是,当通过POST而不是内联URL发送表单数据时,映射将返回为NULL。
是否有类似的方法使用POST一次检索所有参数?
编辑:
我的数据作为序列化JSON提交,因此使用cURL语句作为示例:
curl --data "firstname=john&lastname=smith" http://localhost:8080/uuid1/apitest/method1
理想情况下,我想得到一个类似于:
的散列图ParamMap["firstname"] = "john"
ParamMap["lastname"] = "smith"
此外,参数不会是静态的,所以这个cURL:
curl --data "job=construction" http://localhost:8080/uuid2/apitest/method2
会导致:
ParamMap["job"] = "construction"
答案 0 :(得分:1)
最后使用这个帖子解决了这个问题:
Jersey: Consume all POST data into one object
我的新功能是:
@POST
@Path("/{uuid}/invoke/{method}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response invokeMethod (
MultivaluedMap<String,String> params,
@PathParam("uuid") String uuid,
@PathParam("method") String method
) {
变量'params'现在是一个包含表单数据键/值对的映射。
答案 1 :(得分:-1)
您可以尝试以下代码
@POST
@Path("/{uuid}/invoke/{method}")
public Response invokeMethod (
@Context UriInfo request
) {
Map<String, List<String>> params = request.getPathParameters();
}
你不需要写
@Context
private HttpServletRequest request;
现在你可以了解......