我正在开发一个处理POST请求的HttpServlet,该请求包括查询字符串中的参数和JSON对象。它不是表单提交,整个主体都是JSON对象。我知道需要使用HttpServletRequest.getReader()来读取主体。但我也需要使用HttpServletRequest.getParameter()来获取查询参数。而且我知道两者都不能同时使用。
我认为预期的解决方案是创建一个HttpServletRequestWrapper,并以允许多次调用的方式重写getReader()。但我无法弄清楚如何做到这一点。或者也许这不是预期的方法。我能找到的所有HttpServletRequestWrapper示例似乎都与创建过滤器和修改请求内容有关。
非常感谢任何帮助。
顺便说一下,这是托管在Google App Engine上的,但我认为这不会影响解决方案。
我认为预期的解决方案是创建一个HttpServletRequestWrapper,并以允许多次调用的方式重写getReader()。但我无法弄清楚如何做到这一点。或者也许这不是预期的方法。我能找到的所有HttpServletRequestWrapper示例似乎都与创建过滤器和修改请求内容有关。
非常感谢任何帮助。
顺便说一下,这是托管在Google App Engine上的,但我认为这不会影响解决方案。
getParameter()
的Javadoc的最后一段,http://download.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameter%28java.lang.String%29 POST参数作为请求体发送。因此,如果它们尚未被解析并且您读取了正文,则将无法使用getParameter()
,反之亦然。 - BalusC