您可以使用ContainerRequestFilter:
@Provider
public class LogFilter implements ContainerRequestFilter {
private Logger LOG = LoggerFactory.getLogger(LogFilter.class);
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
if (!"POST".equals(requestContext.getMethod())
|| !MediaType.APPLICATION_JSON_TYPE.equals(requestContext.getMediaType())
|| requestContext.getEntityStream() == null) {
return;
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IOUtils.copy(requestContext.getEntityStream(), baos);
byte[] bytes = baos.toByteArray();
LOG.info("Posted: " + new String(bytes, "UTF-8"));
requestContext.setEntityStream(new ByteArrayInputStream(bytes));
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以只在需要的地方按@NameBinding注册此过滤器,而不是检查方法和内容类型.
注意:这个简单的示例复制了请求的InputStream,因此它将被读取两次(可能是性能问题).
| 归档时间: |
|
| 查看次数: |
4741 次 |
| 最近记录: |