Jersey:将所有 POST 数据消耗到一个对象中

2023-12-03

我在我的应用程序中使用 Jersey 1.8。我正在尝试消费POST服务器上的数据。数据的类型是application/x-www-form-urlencoded. 有没有一种方法可以获取一个对象中的所有数据,也许是Map<String, Object>.

我遇到了泽西岛@Consumes(MediaType.APPLICATION_FORM_URLENCODED)。但使用这个需要我使用@FormParam,如果参数数量很大,这可能会很乏味。或者也许一种方法是这样的:

    @POST
    @Path("/urienodedeample")
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces(MediaType.APPLICATION_JSON)
    public Response uriEncodedExample(String uriInfo){
        logger.info(uriInfo);
        //process data
        return Response.status(200).build();
    }

上面的代码使用并呈现表单数据String目的。

_search=false&nd=1373722302667&rows=10&page=1&sidx=email&sord=desc

处理这个问题可能很容易出错,因为任何错误的地方&split() 将返回损坏的数据。

我的大部分工作都使用 UriInfo,它会为我提供查询参数MultiValuedMap或者对于其他 POST 请求,将有效负载发送到json格式,该格式又会被解组为Map<String, Object>。如果 POST 数据属于以下类型,有关如何执行相同操作的任何建议application/x-www-form-urlencoded.


知道了。按照this文档,我可以使用MultivaluedMap<K,V> or Form获取该类型的所有 POST 数据application/x-www-form-urlencoded在一个对象中。一个工作示例:

    @POST
    @Path("/urienodedeample")
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces(MediaType.APPLICATION_JSON)
    public Response uriEncodedExample(MultivaluedMap<String,String> multivaluedMap) {
        logger.info(multivaluedMap);
        return Response.status(200).build();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jersey:将所有 POST 数据消耗到一个对象中 的相关文章

随机推荐