2011-12-23 107 views
2

我使用CXF和JacksonJsonProvider作爲我的REST服務。我有一個測試方法如下使用Jackson解析多部分/表單數據或應用程序/ json

@POST 
@Path("/book/{id}") 
@Consumes({"application/json, multipart/form-data, application/x-www-urlencoded"}) 
@Produces({"application/json"}) 
public boolean setOwner(Book book) { 
    System.out.println(book.getName()); 
    return true; 
} 

現在,如果我使與原料JSON字符串POST請求如下

{"Book":{"name":"Book name","publisher":"Book publisher"}} 

如我使用的內容類型爲「應用程序的請求是正確處理/ json'一邊提出請求。

但是,由於我正在與外部服務集成,因此我接受了multipart/form-data或application/x-www-urlencoded,因爲在Jackson中沒有任何afaik可以處理它。如果有人能指出我會走向正確的方向。

我可以使用Jettison(CXF的一部分)管理multipart/form-data,但我想用Jackson。

回答

0

我一直在尋找做同樣的事情,幾乎到幾年後!我沒有多少運氣使用一種方法來處理多個MIME次,但我沒有得到它使用兩種方法來工作,例如:

@POST 
@Path("/book/{id}") 
@Consumes({"multipart/form-data"}) 
@Produces({"application/json"}) 
public boolean setOwnerFromUpload(@FormDataParam("file") InputStream inputStream) { 
    // decode 
    final ObjectMapper mapper = new ObjectMapper(); 
    final Book book = (Book) mapper.readValue(inputStream, Book.class); 
    System.out.println(book.getName()); 
    return true; 
} 

兩種方法,現在傑克遜可以處理兩個不同的MIME類型。

相關問題