如何检测 HttpServletRequest 是否有正文?
问题我试图检测一个 http 请求是否有一个主体,而无需阅读它或做任何使现有代码无法处理它的事情,无论它在流中稍后做什么。
boolean hasBody(HttpServletRequest http) {
boolean hasBody = false;
try {
hasBody = http.getInputStream() != null; // always gives true
hasBody = http.getReader().ready(); // always gives IllegalStateException
} catch (IOException e) {
}
return hasBody;
}
不幸的是,当我将它们测试为 GET 和 POST 和 body 时,我想不出这两项检查都有效。
请注意,如果可能,我不想这样做:“POST”.equals(http.getMethod()) 或 !"GET".equals(http.getMethod()) 因为我不确定有一种没有身体的方法。
回答
您可以使用 getContentLength() 或 getContentLengthLong() 并检查它是否为正。
页:
[1]