如何从 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();
// ...
}
我也试过这个,但是容器无法初始化并出现这个错误:
严重:在资源和/或提供程序类中检测到以下错误和警告: 严重:在索引 0 的参数处缺少方法 public javax.ws.rs.core.Response SomeResource.post(javax.servlet.http.HttpServletRequest) 的依赖项 严重:方法,公共 javax.ws.rs.core.Response SomeResource.post(javax.servlet.http.HttpServletRequest),用资源的 POST 注释,类 SomeResource,不被识别为有效的资源方法。
@POST
public Response post(@Context HttpServletRequest request) {
String contentType = request.getContentType();
InputStream requestBody = request.getInputStream();
// ...
}
该方法位于子资源类中,该子资源类是从具有@Path
另一个资源类中的注释的方法创建的。
我正在使用泽西岛 1.11。