Map<String, String[]> pmap = request.getParameterMap(); BufferedReader br = request.getReader(); String res = ""; while ((res = br.readLine()) != null) { System.out.println("request body:" + res); out.print("<BR/>request body:" + res); }
以上代码在servlet里可以打印出来post请求的参数吗?
答案是不可以!!
为什么呢?
这个十分怪异,找了朋友,让他们帮忙用request.getReader()获得post参数,却都告诉我可以拿到。。
我就纳闷了,我的代码哪里出了错?
于是把朋友的代码拷过来,试了一下,成了!
就是第一行的getParameterMap(),这句话把数据读了一遍之后,后面的request.getReader()拿不到了!
去掉第一行的getParameterMap()就可以了。。。。
getReader只能调用一次
原因参考API,及这个帖子http://topic.youkuaiyun.com/t/20030816/03/2152573.html
POST参数获取冲突
本文探讨了在Servlet中使用getParameterMap()与getReader()方法获取POST请求参数时出现的数据读取冲突问题。当先调用getParameterMap()后,再尝试通过getReader()获取请求体内容时会失败。解决方法是避免同时使用这两个方法。
6111

被折叠的 条评论
为什么被折叠?



