Получение необработанного тела запроса в методе ресурса JAX-RS
Как я могу получить доступ к необработанному телу запроса из метода ресурса JAX-RS, какjava.io.InputStream
или жеbyte[]
? Я хочу, чтобы контейнер обходил любойMessageBodyReader
для определенного класса ресурса или метода, но у меня есть другие ресурсы в проектах, которые должны использовать некоторые.MessageBodyReader
Я пробовал это, но он будет вызывать зарегистрированныхMessageBodyReader
s и не удается присвоить результатInputStream
(та же проблема сbyte[]
).
@POST
public Response post(@Context HttpHeaders headers, InputStream requestBody) {
MediaType contentType = headers.getMediaType();
// ...
}
Я также попробовал это, но затем контейнер не удается инициализировать с этой ошибкой:
SEVERE: The following errors and warnings have been detected with resource and/or provider classes: SEVERE: Missing dependency for method public javax.ws.rs.core.Response SomeResource.post(javax.servlet.http.HttpServletRequest) at parameter at index 0 SEVERE: Method, public javax.ws.rs.core.Response SomeResource.post(javax.servlet.http.HttpServletRequest), annotated with POST of resource, class SomeResource, is not recognized as valid resource method.
@POST
public Response post(@Context HttpServletRequest request) {
String contentType = request.getContentType();
InputStream requestBody = request.getInputStream();
// ...
}
Метод находится в классе подресурсов, который создается из метода с@Path
аннотация в другом классе ресурсов.
Я использую Джерси 1.11.