我想上传一个 JPG 文件和一个 JSON 序列化的 Java 对象。在我使用 Apache CXF 的服务器上,在客户端上我正在使用rest-assured进行集成测试。
我的服务器代码如下所示:
@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");
当我从文件中读取 json 部分时,一切正常,就像在第一个 multiPart 行中一样。但是,当我想序列化 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)
但不是。谁能告诉我应该怎么做?