我在应用程序中使用Jersey 1.8。我正在尝试POST在服务器上使用数据。数据是类型的application/x-www-form- urlencoded。 有没有一种方法可以将所有数据(可能是)收集到一个对象中Map<String, Object>。
POST
application/x-www-form- urlencoded
Map<String, Object>
我碰到泽西岛的@Consumes(MediaType.APPLICATION_FORM_URLENCODED)。但是使用此功能需要我使用@FormParam,如果参数数量巨大,这可能很乏味。也许这是一种方法:
@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对象中的表单数据。
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。
MultiValuedMap
json
application/x-www-form-urlencoded
得到它了。根据本文档,我可以使用MultivaluedMap<K,V>或窗体application/x-www- form-urlencoded在一个对象中获取该类型的所有POST数据。工作示例:
MultivaluedMap<K,V>
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(); }