问题
我试图检测一个 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() 并检查它是否为正。
|