2013-07-13 32 views
4

我在我的應用程序中使用Jersey 1.8。我試圖在服務器上使用POST數據。數據類型爲application/x-www-form-urlencoded是否有一種方法可以獲取一個對象中的所有數據,可能是Map<String, Object>Jersey:將所有POST數據消費到一個對象

我遇到澤西島的@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 

處理這個()可以是易錯的任何錯位的&和分裂將返回損壞的數據。

我用UriInfo對於我的大部分工作,這將使我在MultiValuedMap或其他POST請求的查詢參數,發送的有效載荷在json格式又將解組到Map<String, Object>。如果POST數據類型爲application/x-www-form-urlencoded,我可以如何做到這一點。

回答

8

明白了。根據this文檔,我可以使用MultivaluedMap<K,V>Formapplication/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(); 
    } 
+0

你也可以使用多值HashMap – kazy

相關問題