【问题标题】:Unable to get the content out of a HttpServletRequest无法从 HttpServletRequest 中获取内容
【发布时间】:2009-06-30 21:27:28
【问题描述】:

我正在尝试获取 HttpServletRequest 的内容。这是我的做法:

// Extract the request content
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
String content = "";

try {
    InputStream inputStream = request.getInputStream();
    if (inputStream != null) {
        bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        char[] charBuffer = new char[128];
        int bytesRead = -1;
        while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
            stringBuilder.append(charBuffer, 0, bytesRead);
        }
    } else {
        stringBuilder.append("");
    }
} catch (IOException ex) {
    throw ex;
} finally {
    if (bufferedReader != null) {
        try {
            bufferedReader.close();
        } catch (IOException ex) {
            throw ex;
        }
    }
}

content =  stringBuilder.toString();
System.out.println("Length: " + request.getContentLength());

字符串“内容”为空。但是,最后一行显示

长度:53

这正是我期望的内容的长度。如果有帮助,这是我触发此 servlet 的方式:

wget --post-data='{"imei":"351553012623446","hni":"310150","wdp":false}' http://localhost:8080/test/forward

【问题讨论】:

  • 您使用的是什么 servlet 容器?您的代码在 Tomcat 6.0.18 中适用于我。
  • Tomcat 6.0.20 所以你在“内容”中得到了一些东西?
  • 你如何验证“内容”的价值?
  • @pensador 是的,我在您的代码中添加了 System.out.println("content==" + content) 并且我看到了来自 wget 的发布数据。
  • @Jack Leow:我尝试在调试模式下运行服务器并检查“内容”并使用 System.out.println() 在控制台上显示它。 @John Wagenleitner:知道我这边可能出了什么问题吗?

标签: java jakarta-ee servlets


【解决方案1】:

嗯,我终于找到了答案!事实证明,赋予 wget 的“post-data”的值成为请求中参数的名称。换句话说,如果我获得请求中第一个(也是唯一一个)参数的参数名称,我将获得该值。提取它的代码很简单:

// Extract the post content from the request
@SuppressWarnings("unchecked")
Enumeration<String> paramEnum = request.getParameterNames();
paramEnum.hasMoreElements();
String postContent = (String) paramEnum.nextElement();

感谢大家的回复!

【讨论】:

    猜你喜欢
    • 2019-03-29
    • 2020-11-04
    • 2011-12-02
    • 1970-01-01
    • 2017-09-16
    • 2013-12-26
    • 1970-01-01
    • 2018-02-23
    • 2012-05-08
    相关资源
    最近更新 更多