Я пытался в течение нескольких дней использовать RESTEasy Client-Proxy с многочастными формами.
В лучшем случае я хотел бы передать MultipartFile в Прокси.Например,
//client:
//Resteasy proxy creation left out for brevity
public Response add(MultipartFile versionFile) {
proxy.add(versionFile);
}
//server (interface):
@POST
@Consumes({MediaType.MULTIPART_FORM_DATA})
FormularDTO add(MultipartFile versionFile);
. Это всегда заканчивается исключением.
could not find writer for content-type multipart/form-data type: org.springframework.web.multipart.support
. Как указано в Документах, существует два способа обработки Multipart-Files:
a)MultipartOutput/MultipartInput
:
Что я должен отправить через прокси?Если я отправлю MultipartOutput
, я получу то же исключение.MultipartInput
is Abstract
.
b) Использовать DTO с @MultipartForm
Решение, используемое в настоящее время в проекте, но требующее сопоставления всех метаданных файла, создания нового DTO и т. Д.
См. Пример ниже:
//DTO
public class MultipartFileDataDTO {
@FormParam("file")
@PartType(MediaType.APPLICATION_OCTET_STREAM)
private InputStream file;
@FormParam("contentType")
@PartType(MediaType.TEXT_PLAIN)
private String contentType;
...
}
//Server-Interface
@POST
@Consumes({MediaType.MULTIPART_FORM_DATA})
FormularDTO add(@MultipartForm MultipartFileDataDTO versionFile);
//Client-Mapping
MultipartFileDataDTO upload = new MultipartFileDataDTO();
upload.setFile(versionFile.getInputStream());
upload.setContentType(versionFile.getContentType());
...
Мой вопрос: Какой самый простой способ «передать» MultipartFile через сгенерированный RESTEasy-Client-Proxy?