【发布时间】:2017-07-14 00:20:09
【问题描述】:
我想知道是否有一种方法可以使用像 com.sun.jersey.spi.container.ContainerRequestFilter 这样的过滤器来查看整个 REST PUT 请求。这将帮助我们查看请求正文中的特殊字符,这会导致应用程序抛出错误的请求代码 400。
我们尝试使用 UTF-8 字符集,但没有帮助。有没有办法让我们允许像 ^B 这样的特殊字符并在服务中处理它们。
【问题讨论】:
我想知道是否有一种方法可以使用像 com.sun.jersey.spi.container.ContainerRequestFilter 这样的过滤器来查看整个 REST PUT 请求。这将帮助我们查看请求正文中的特殊字符,这会导致应用程序抛出错误的请求代码 400。
我们尝试使用 UTF-8 字符集,但没有帮助。有没有办法让我们允许像 ^B 这样的特殊字符并在服务中处理它们。
【问题讨论】:
我总是在实现 containerRequestFilter 的 myFilter 类中使用以下方法。
这个方法返回像 {"a":"1","b":"2"} 这样的 jsonString。
private String getEntityBody(ContainerRequestContext requestContext) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = requestContext.getEntityStream();
String result = null;
try {
ReaderWriter.writeTo(in, out);
byte[] requestEntity = out.toByteArray();
if (requestEntity.length == 0) {
result = "";
} else {
result = new String(requestEntity, "UTF-8");
}
requestContext.setEntityStream(new ByteArrayInputStream(requestEntity));
} catch (IOException e) {
}
return result;
}
【讨论】: