2011-12-23 105 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类型。

相关问题