JPGファイルとJSONシリアル化されたJavaオブジェクトをアップロードしたいと思います。サーバーではApacheCXFを使用しており、クライアントでは安心して統合テストを行っています。
私のサーバーコードは次のようになります:
@POST
@Path("/document")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response storeTravelDocument(
@Context UriInfo uriInfo,
@Multipart(value = "document") JsonBean bean,
@Multipart(value = "image") InputStream pictureStream)
throws IOException
{}
私のクライアントコードは次のようになります:
given().
multiPart("document", new File("./data/json.txt"), "application/json").
multiPart("image", new File("./data/image.txt"), "image/jpeg").
expect().
statusCode(Response.Status.CREATED.getStatusCode()).
when().
post("/document");
最初のmultiPart行のように、ファイルからjsonパーツを読み取ると、すべて正常に機能します。ただし、jsonインスタンスをシリアル化する場合、問題が発生します。私は多くの変種を試しましたが、どれもうまくいきませんでした。
私はこの亜種が機能するはずだと思った:クライアント上
JsonBean json = new JsonBean();
json.setVal1("Value 1");
json.setVal2("Value 2");
given().
contentType("application/json").
formParam("document", json).
multiPart("image", new File("./data/image.txt"), "image/jpeg").
...
とサーバー上
public Response storeTravelDocument(
@Context UriInfo uriInfo,
@FormParam(value = "document") JsonBean bean,
@Multipart(value = "image") InputStream pictureStream)
しかし、違います。誰かがそれがどうあるべきか教えてもらえますか?