验证api密钥我已经使用ContainerRequestFilter来读取JSON有效内容并解析api密钥。我有以下方法。Jersey ContainerRequestFilter获取空实体流
public ContainerRequest filter(ContainerRequest request) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = request.getEntityInputStream();
try {
int read;
final byte[] data = new byte[2048];
while ((read = in.read(data)) != -1)
out.write(data, 0, read);
byte[] requestEntity = out.toByteArray();
request.setEntityInputStream(new ByteArrayInputStream(requestEntity));
if (!validate(new String(data))) {
throw new WebApplicationException(401);
}
return request;
} catch (IOException ex) {
throw new WebApplicationException(401);
}
}
但是,数据总是空白/空白。如果没有过滤器,有效负载将达到资源类,并且工作得很好。任何线索为什么有效载荷是空的?我正在使用Firefox的REST客户端在Body中使用JSON进行测试。
感谢您的回复。应用修复,但仍然没有得到身体。但是,我已经用LogginFilter替换了我的过滤器,并且在打印标题时不会打印正文。在LoggingFilter代码中if(in.available()> 0)没有通过暗示实体流为空的条件时,我可以通过'sudo tcpdump -i lo0 -A port 8080'来看到有效载荷。不知道我在这里错过了什么。 – user1516100
正是我面临的。 'in.available'给-1。 @ user1516100:您是否找到任何解决方案? –