您好,我正在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
的情况下此行为不起作用?