为了验证 api 密钥,我使用了 ContainerRequestFilter 来读取 JSON 有效负载并解析 api 密钥。我有以下方法。
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 客户端和正文中的 JSON 进行测试。