如何在Java中从HttpServletRequest检索原始发布数据

BT:

我正在尝试获取Java中的发布数据。好像应该做的最简单的事情之一?我的意思是,HttpServletRequest.getParameter必须正确执行吗?那么如何获取原始帖子数据?

我发现HttpServletRequest获得JSON POST数据,并使用Kdeveloper的代码从请求中提取发布数据。它有效,但是有一个陷阱:我只能一次获取该发布数据

这是我根据Kdeveloper的代码制作的方法:

public static String getPostData(HttpServletRequest req) {
    StringBuilder sb = new StringBuilder();
    try {
        BufferedReader reader = req.getReader();
        reader.mark(10000);

        String line;
        do {
            line = reader.readLine();
            sb.append(line).append("\n");
        } while (line != null);
        reader.reset();
        // do NOT close the reader here, or you won't be able to get the post data twice
    } catch(IOException e) {
        logger.warn("getPostData couldn't.. get the post data", e);  // This has happened if the request's reader is closed    
    }

    return sb.toString();
}

以前,我在此方法结束时关闭了读取器,但是当该方法在同一请求上多次运行时,这会导致异常。如果不关闭它,则不会发生任何异常,但是该方法将返回一个空字符串。

老实说,应该只提供一个公开的req.getPostData()方法-没有人认为这会有用吗?

那么,如何编写此方法,使其始终返回正确的发布数据?

BalusC:

请求主体可通过HttpServletRequest#getInputStream()以下方式作为字节流使用

InputStream body = request.getInputStream();
// ...

作为字符流通过HttpServletRequest#getReader()

Reader body = request.getReader();
// ...

请注意,您只能阅读一次。客户端不会多次重发相同的请求。调用getParameter()等等也将隐式读取它。如果以后需要分解参数,则必须将主体存储在某个地方并自行处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在ApiController中获取原始发布请求

如何使用php获取远程网站中表单的原始发布数据

如何在swift 3中发布原始数据?

如何在Java中修改HttpServletRequest主体?

如何在Java中播放pcm原始数据

如何在Py3中检索argv原始字节数据?

如何在HBase中存储原始数据类型并进行检索

如何在 Microsoft Bot Framework 中检索 AdaptiveCard 发布的表单数据?

如何在(非Android)Java应用中检索Firebase数据?

使用Jersey时如何检索HttpServletRequest数据

如何使用GnuPG从签名中检索原始数据?

如何解析发布在ktor中的原始json数据列表

NodeJS - 如何在使用 JSON.parse(JSON.stringify()) 后从缓冲区中检索原始数据

Laravel(5.8)PHP单元发出原始发布请求

如何在firebase中检索数据范围

如何在Firebase中检索数据的名称

如何在React中从Firebase检索数据?

如何在select中从db检索数据?

显示如何在Codeigniter中检索数据

如何在Java Servlet的现有HttpServletRequest中添加参数?

angularjs 4:如何发布原始JSON数据

如何使用curl发布原始身体数据?

如何从java中的json对象检索数据?

如何从链表Java中检索数据

如何在Java中动态检索常量?

如何在Java中检索对象类型?

如何在Java程序中从Access数据库中检索整数列的最大值?

如何在Spring Boot中从原始查询中获取数据?

您如何在PHP中发布JSON数据?(将原始cURL代码转换为PHP)