大家都知道getParameter系列方法可以获得get和post请求的参数,但是getReader和getInputStream方法绝不能忽略
- 一次问题的记录
需求是我方服务有一个服务被对方请求,我需要获取到发送过来的参数
然而在使用getParameter系列方法接受时,参数内容为空
经过查资料发现multipart/form-data格式、还有直接post的json数据(不是键值对格式)的数据只能由getInputStream() 或getReader() 方法读取
原因如下:
如果是POST请求要根据表单提交数据的编码方式来确定能否使用.
当编码方式是(application/x- www-form-urlencoded)时才能使用.
这种编码方式(application/x-www-form-urlencoded)虽然简单,但对于传输大块的二进制数据显得力不从心.
对于传输大块的二进制数这类数据,浏览器采用了另一种编码方式(“multipart/form-data”),这时就需要使用下面的两种方法.
需要注意的是:
request.getParameter()、 request.getInputStream()、request.getReader()这三种方法是有冲突的,因为流只能被读一次。
参考:https://www.cnblogs.com/xiancheng/p/5524338.html