驗證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:您是否找到任何解決方案? –