Mon*_*oon 5 java rest jersey unmarshalling
我在我的应用程序中使用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();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码使用并在String对象中呈现表单数据.
_search=false&nd=1373722302667&rows=10&page=1&sidx=email&sord=desc
Run Code Online (Sandbox Code Playgroud)
处理此问题可能容易出错,因为任何错位&和split()都会返回损坏的数据.
我在我的大部分工作中都使用了UriInfo,它可以在一个MultiValuedMap或其他POST请求中提供查询参数,以json格式发送有效负载,然后将其解组为a Map<String, Object>.如果POST数据是类型的话,有关如何做同样的建议application/x-www-form-urlencoded.
Mon*_*oon 10
得到它了.根据这个文档,我可以使用一个MultivaluedMap<K,V>或Form来获取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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12348 次 |
| 最近记录: |