我正在开发一个HttpServlet,它处理来自应用程序的POST请求,其中包括查询字符串上的参数,以及正文中的JSON对象。它不是一个表单post,整个主体是JSON对象。我知道我需要用HttpServletRequest.getReader()来阅读身体。但是,我还需要使用HttpServletRequest.getParameter()来获取查询参数。而且我知道两者都不能使用。
我认为,我们的解决方案是创建一个HttpServletRequestWrapper,并以允许多次调用它的方式覆盖getReader()。但我不知道该怎么做。或者这不是我们想要的方法。我可以找到的所有HttpServletRequestWrapper示例似乎都与创建过滤器和修改请求的内容有关。
任何帮助都是非常感谢的。
顺便说一句,这是在上托管的,但我不认为这会影响解决方案。
发布于 2011-05-03 16:25:07
我认为您可以在您的getReader()中实现多个可调用的HttpServletRequestWrapper:
HttpServletRequestWrapper.getReader()时,打开临时文件。。
要实现(1)和(3),ServletFilter可能是有用的。
发布于 2011-06-28 09:40:51
我建议通过解析查询字符串直接读取查询字符串参数。这样,您就不会接触消息体,并且可以使用HttpServletRequest.getReader()。
解析查询字符串很棘手,但可以使用Apache客户端包中的URLEncodedUtils安全地完成,如下所述:
https://stackoverflow.com/questions/5872109
复制相似问题