servlet application/x-www-form-urlencoded 坑

1 背景

servlet 拿不到 curl post request 的 json body

2 https://blog.csdn.net/liuyang755855737/article/details/79998716

根据Servlet规范,如果同时满足下列条件,则请求体(Entity)中的表单数据,将被填充到request的parameter集合中(request.getParameter系列方法可以读取相关数据):
1 这是一个HTTP/HTTPS请求
2 请求方法是POST(querystring无论是否POST都将被设置到parameter中)
3 请求的类型(Content-Type头)是application/x-www-form-urlencoded

4 Servlet调用了getParameter系列方法

不过,我们的代码并没有调用getParameter,当然有可能某个filter去调用了

而curl通过抓包,(参考fiddler原理+fiddler为什么抓chrome而不能抓curl和httpclient?fiddler为什么能篡改报文?为curl设置代理的方式),发现确实缺省情况下,是application/x-www-form-urlencoded

3 碰碰运气,给curl加上application/json,顺利拿到body

原文地址:https://www.cnblogs.com/silyvin/p/14516300.html