2011-12-23 36 views
2

私はREST ServicesのためにJacksonJsonProviderでCXFを使用しています。ジャクソンを使用してmultipart/form-dataまたはapplication/jsonをパーズする

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

を次のように私は、アプリケーションのようにContent-Typeを使用するよう要求が正しく処理された生のJSON文字列とPOSTリクエストを行う場合は今

@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 'を要求しています。

しかし、私は外部サービスと統合しているので、multipart/form-dataまたはapplication/x-www-urlencodedのいずれかを受け取ることができます。誰かが私を正しい方向に向けることができれば、それはすばらしいことになります。

私はJettison(CXFの一部)でmultipart/form-dataを管理できますが、私はJacksonを使いたいと思います。

答えて

0

私はまったく同じことを、ほとんど何年も後にしていました!私は複数のMIME回を処理するための一つの方法を使用して多くの幸運を持っていなかったが、私はそれは例えば、2つのメソッドを使用して仕事になりました:

@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を扱うことができますタイプ。

関連する問題