java - 从 HttpServletRequest 获取 POST 请求正文

标签 java servlets post

我正在尝试从 HttpServletRequest 对象中获取整个主体。

我正在关注的代码如下所示:

if ( request.getMethod().equals("POST") )
{
    StringBuffer sb = new StringBuffer();
    BufferedReader bufferedReader = null;
    String content = "";

    try {
        //InputStream inputStream = request.getInputStream();
        //inputStream.available();
        //if (inputStream != null) {
        bufferedReader =  request.getReader() ; //new BufferedReader(new InputStreamReader(inputStream));
        char[] charBuffer = new char[128];
        int bytesRead;
        while ( (bytesRead = bufferedReader.read(charBuffer)) != -1 ) {
            sb.append(charBuffer, 0, bytesRead);
        }
        //} else {
        //        sb.append("");
        //}

    } catch (IOException ex) {
        throw ex;
    } finally {
        if (bufferedReader != null) {
            try {
                bufferedReader.close();
            } catch (IOException ex) {
                throw ex;
            }
        }
    }

    test = sb.toString();
}

我正在使用 curl 和 wget 测试功能,如下所示:

curl --header "MD5: abcd" -F "fileupload=@filename.txt http://localhost:8080/abcd.html"

wget --header="MD5: abcd" --post-data='{"imei":"351553012623446","hni":"310150","wdp":false}' http://localhost:8080/abcd.html"

但是 while ( (bytesRead = bufferedReader.read(charBuffer)) != -1 ) 没有返回任何内容,所以我没有在 StringBuffer 上附加任何内容。

最佳答案

在 Java 8 中,您可以用一种更简单、更简洁的方式来做到这一点:

if ("POST".equalsIgnoreCase(request.getMethod())) 
{
   test = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
}

关于java - 从 HttpServletRequest 获取 POST 请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100634/

相关文章:

java - 根据一行数据对二维数组进行排序

Java 使用同步... Haskell 使用什么?

jsp - 如果我没有手动创建 session 对象,如何在我的 jsp 页面中自动创建 session ?

java - 如何在 Spring 中管理 java servlet(或 DI)?

Java servlet 映射

java - jetty WebSocket

java - IBM Db2 Clob 列可存储最大 20MB 的文本

asp.net-mvc - 使用相同的方法签名发布和获取

python - 连接python服务器和html

wcf - 通过 3G 向 WCF 服务发送 POST 请求