ServletRequest:读取getReader时获取空数据

时间:2019-01-17 14:02:47

标签: java servlets servlet-filters form-data

您好,我正在ServletRequest上工作,但发现无法读取ContentType为 x-www-form-urlencoded 的已发布数据。
但是通过将ContentType更改为 application / json ,我能够成功读取发布的数据。

请在下面查看我的代码段:

POST /myservlet
ContentType - application/x-www-form-urlencoded
data: JSON.stringify({"request":[{"color": "blue","answer": 55}]})

过滤器:

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain){
    req.getParameter(..);
    chain.doFilter(req, res);
}

Servlet代码:

BufferedReader br = request.getReader();
while ((str = br.readLine()) != null) {
    wholeStr += str;
}
---Getting empty data here

但是当我将请求内容类型更改为 application / json 时,以上代码可以很好地工作并且能够读取servlet中的JSON数据。


查询
1.为什么会出现这样的行为:使用application/json可以读取数据却可以使用x-www-form-urlencoded来获取空数据?

2.如果getParameter()内部使用正在读取我的数据的输入流,为什么在here被称为application/json的情况下此行为不起作用?

0 个答案:

没有答案