52ky 发表于 2022-5-6 16:02:35

如何检测 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]
查看完整版本: 如何检测 HttpServletRequest 是否有正文?