multipart/mixed и application/octet-stream
У меня есть веб-сервис на основе джерси, который выдает "multipart/mixed" RESPONSE следующим образом: метод читает файл и должен вернуть его в формате октетов.
@GET
@Produces("multipart/mixed")
public byte[] getDocumentContents(@Context HttpHeaders header){
....
....
....
os = new ByteArrayOutputStream();
....
....
....
return os;
}
У меня вопрос: как мне убедиться, что ответ имеет тип OCTET-STREAM? Я знаю, что мог бы также просто аннотировать вышеупомянутый метод как:
@Produces("application/octet-stream")
Но я специально требую установить RESPONSE content-Type как "multipart / mixed" при отправке файла в формате потока октетов.
Вышеупомянутый метод делает это? Я предполагаю, что это так, но у меня нет конкретной причины, как это сделать.
заранее спасибо!
1 ответ
Я не думаю, что "multipart/mixed" является допустимым типом носителя, который должен быть возвращен методом REST. На мой взгляд, правильный путь будет следующим:
@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getDocumentContents(@HeaderParam("your header param") final YourHeaderParamUserType headerParam) {
byte[] outByteArray = ... obtain byte array
return Response.ok()
.entity(outByteArray)
.build();
}
Обрати внимание на:
- @Produces (MediaType.APPLICATION_OCTET_STREAM)
Параметр, который вы, возможно, захотите "извлечь" из заголовка, можно получить с помощью параметра в функции, например:
@HeaderParam ("ваш параметр заголовка") final YourHeaderParamUserType headerParam
Единственное, что вам не нужно забывать в "YourHeaderParamUserType", это:
- Включить конструктор из строки
- ... или включить статический метод fromString(String)
- ... или включить статический метод valueOf(String)