背景
字段 | 说明 |
---|---|
请求类型 | POST |
Content-Type | application/x-www-form-urlencoded |
参数 | testName:testValue |
现象
采用如下代码获取信息,获取不到
private void test(HttpServletRequest request, HttpServletResponse response) {
try {
/* 打印request信息 */
String dataInput = Http.input(request);
Log.info("[LoginController][test]input:{}", dataInput);
String aliyunId = request.getParameter("testName");
原因
好心人加入了打印日志的代码,可是展开一看:
BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
- 这里已经读取了流,据说流只能读取一次
- 后面获取parameter,流已经没有数据了,获取不到的。
解决办法
流操作和getParameter,二者只留其一。
参考
http://www.cnblogs.com/liangjie/archive/2011/05/25/2057399.html
http://hongjiang.info/http-application-x-www-form-urlencoded/
后记
应该增加点HTTP和JAVA IO的知识了,mark down以明下一步学习计划。