小编典典

泽西岛:将所有POST数据消费到一个对象中

java

我在应用程序中使用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,它将为我提供a
MultiValuedMap或其他POST请求中的查询参数,以有效json格式发送有效载荷,而该有效载荷又可以反编组为Map<String, Object>。如果POST数据是类型的,我怎么做的任何建议application/x-www-form-urlencoded


阅读 214

收藏
2020-11-19

共1个答案

小编典典

得到它了。根据文档,我可以使用MultivaluedMap<K,V>窗体application/x-www- form-urlencoded在一个对象中获取该类型的所有POST数据。工作示例:

    @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();
    }
2020-11-19