【问题标题】:Modify request message body修改请求消息体
【发布时间】:2015-07-16 02:09:04
【问题描述】:

如何在过滤器级别修改请求消息正文。我们可以使用RequestWrapper 使用自定义消息更改消息正文吗?

【问题讨论】:

标签: java servlets filter


【解决方案1】:

简短的回答是肯定的。

但是,您并没有真正修改原始请求正文;相反,您可以从请求包装器返回不同的主体,而 servlet 将使用它。

至于怎么做,直接覆盖HttpServletRequestWrappergetInputStream()方法,返回原InputStream的修改版即可。

为确保删除原始正文的任何​​痕迹,您可能还需要覆盖getReader()。当要求读者时,标准实现会在您的InputStream 上返回一些BufferedReader,但是 有一些模拟实现(比如 spring-test 中的那个)。

【讨论】:

  • 如何为请求返回不同的正文
  • 我试图通过编辑我上面的帖子来回答:你应该覆盖getInputStream()(和getReader(),这样你就不会依赖底层的HttpServletRequest实现行为)。
  • 我正在使用异步过滤器来读取发布请求,一旦获得所有数据,我就必须将该数据转发到底层 servlet 进行处理。我该怎么做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2016-09-13
相关资源
最近更新 更多