Вот простой пример того, как вы будете обрабатывать двоичные (потоковые) данные из многокомпонентного запроса с помощью RESTEasy:
Во-первых, определите класс для сопоставления вашей многокомпонентной формы:
public class DataUploadForm implements Serializable {
static final long serialVersionUID = IL;
@FormParam("xml")
private String xml;
@FormParam("file")
private InputStream fileStream;
public FileUploadForm() {
super();
}
// Getters and setters here
}
Затем в интерфейсе веб-службы объявите метод, который обрабатывает многокомпонентный контент и сопоставит его с вашим пользовательским классом:
@POST
@Path("/somepath")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
public Response uploadData(@MultipartForm DataUploadForm uploadForm);
А в реализации вашего веб-сервиса обработайте входящий запрос:
@Override
public Response uploadData(DataUploadForm uploadForm) {
System.out.printf("Incoming xml data: %s\n", uploadForm.getXML());
System.out.printf("Incoming binary data: %s\n", uploadForm.getFileStream());
// Processing the input stream. For example, by using Apache Commons IO
final byte[] data ;
try {
data = IOUtils.toByteArray(uploadForm.getFileStream());
} catch (IOException ioe) {
throw new WebApplicationException("Could not read uploaded binary data");
}
return Response.ok().build();
}