首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java servlet中从POST请求中获取请求有效负载

在Java servlet中从POST请求中获取请求有效负载
EN

Stack Overflow用户
提问于 2013-01-26 00:24:31
回答 7查看 310.6K关注 0票数 121

我有一个向Java servlet发送POST请求的javascript库,但是在doPost方法中,我似乎无法获得请求负载的内容。在chrome开发人员工具中,所有内容都在headers选项卡中的Request Payload部分,内容就在那里,我知道帖子是由doPost方法接收的,但它是空白的。

对于HttpServletRequest对象,我可以通过什么方式获取请求负载中的数据?

执行request.getParameter()request.getAttributes()都以没有数据结束

EN

回答 7

Stack Overflow用户

发布于 2013-02-15 07:27:54

代码语言:javascript
复制
String payloadRequest = getBody(request);

使用此方法

代码语言:javascript
复制
public static String getBody(HttpServletRequest request) throws IOException {

    String body = null;
    StringBuilder stringBuilder = new StringBuilder();
    BufferedReader bufferedReader = null;

    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;
            }
        }
    }

    body = stringBuilder.toString();
    return body;
}
票数 78
EN

Stack Overflow用户

发布于 2014-09-02 14:44:04

您可以使用Buffer Reader from request进行读取

代码语言:javascript
复制
    // Read from request
    StringBuilder buffer = new StringBuilder();
    BufferedReader reader = request.getReader();
    String line;
    while ((line = reader.readLine()) != null) {
        buffer.append(line);
        buffer.append(System.lineSeparator());
    }
    String data = buffer.toString()
票数 58
EN

Stack Overflow用户

发布于 2015-02-07 08:20:53

Java 8流

代码语言:javascript
复制
String body = request.getReader().lines()
    .reduce("", (accumulator, actual) -> accumulator + actual);
票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14525982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档