Я работаю над ресурсом REST, который использует ключ и данные (значение) ... Я хотел бы быть надежным, чтобы эти данные могли быть чем угодно. Он может варьироваться от строки до файла.RESTEasy: Нельзя использовать тип контента - даже с правильными @Consumes
Чтобы справиться с этим, у меня есть метод PUT REST, который находится в конце сообщения. Ничего необычного, просто пытаюсь установить базовые данные. Если я отправляю данные, которые являются строкой, это не проблема.
Если, однако, если я пытаюсь отправить файл через, я получаю эту ошибку: org.jboss.resteasy.spi.UnsupportedMediaTypeException: Cannot consume content type
. Вот почему для меня это не имеет смысла:
Если я изменяю @Consumes
от application/octet-stream
до @Consumes("multipart/form-data")
, я могу отправить файл через все отлично. При рассмотрении файла, который хранится я вижу что-то вроде этого:
------WebKitFormBoundaryfuQalizBHtg1BiLJ
Content-Disposition: form-data; name="fileUpload1"; filename="uploadedFile.extension"
Content-Type: application/octet-stream
/* file information here */
------WebKitFormBoundaryfuQalizBHtg1BiLJ--
Обратите внимание, что Content-Type
якобы application/octet-stream
что то, что я пытался потреблять раньше, но получил Cannot consume content type
исключение. Я понятия не имею, что бы это вызвало. Я использую расширение Advanced Rest Client для Chrome, чтобы отправить мой запрос, и выглядит примерно так: https://i.imgur.com/KvKCIkl.jpg
Любые мысли? Благодаря!
@PUT
@Path("{key}")
@Consumes("application/octet-stream")
public Response addData(
final @PathParam("key") String key,
final InputStream data) {
final Service service = new Service();
try {
service.addData(key, data);
} finally {
IOUtils.closeQuietly(data
}
return Response.status(204).build();
}
Интересно, спасибо. Есть ли причина, по которой я не могу использовать '@ Consumes'' application/octet-stream'? Я не могу понять, почему я получаю исключение «не могу потреблять контент», если оно должно совпадать. – joshft91
Это не соответствует. Вы отправляете 'multipart/form-data', и это должно потребляться вашим классом ресурсов. 'application/octet-stream' - это только одна часть. – lefloh
Можно ли отправить 'application/octet-stream', который также может быть использован моим ресурсом как таковым? – joshft91