java—如何在spring的soap拦截器中获取httpservletrequest和httpservletresponse

von4xj4u  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(551)

我有一个带有soap端点的spring引导应用程序和一个实现 EndpointInterceptor 。问题是,此接口中没有可访问的重写方法 HttpServletRequestHttpServletResponse .
我的问题是:
我怎样才能得到它 HttpServletRequestHttpServletResponse 每当api请求使用soap拦截器时(我看到了许多使用soap拦截器的示例) WebMvcConfigurerAdapterHandlerInterceptor 但它只对rest@controller起作用。在我的例子中,它是带有@endpoint的soap,并且不调用重写的方法)。
如果这是不可能的,我怎样才能从 MessageContext 因为handlerequest重写方法具有如下所示的参数
@重写公共布尔HandlerRequest(messagecontext,对象端点)引发异常{log.info(“端点请求处理”);返回true;}

f87krz0w

f87krz0w1#

SpringWS具有用于存储当前底层连接的transportcontext类。您可以通过代码中的transportcontextholder类静态访问它。
如果您确定底层连接是httpservletconnection,那么您可以在拦截器方法中执行以下操作:

TransportContext ctx = TransportContextHolder.getTransportContext();
HttpServletRequest req = ((HttpServletConnection) ctx.getConnection()).getHttpServletRequest();
gzszwxb4

gzszwxb42#

如果您想在使用拦截器到达端点之前/之后操纵(覆盖)httpservletrequest和httpservletresponse,这将是一个坏主意,因为到达该级别的请求将被预处理,并且不会给您修改的选项。
您可以使用过滤器而不是拦截器来实现您的目标。

相关问题