使用 WebFilter 从 XML 获取请求参数
Posted
技术标签:
【中文标题】使用 WebFilter 从 XML 获取请求参数【英文标题】:Get Request Parameters from XML using WebFilter 【发布时间】:2015-07-19 06:06:10 【问题描述】:我正在使用 Glassfish 和 SOAP 开发 Web 服务。我有几个 web 方法,我想将我的 webmethod 名称和他的参数介绍给 http 头请求。
例如:
我有这条路:
上下文:网络服务
webMethod:makeSomething
参数:a=2
所以我创建了一个名为 ProfilingFilter 的类:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, javax.servlet.ServletException
if (request.getContentLength() != -1 && context != null)
((HttpServletResponse) response).addHeader("Operation", -->PATH+PARAMETERS);
// ((HttpServletResponse) response).addHeader("Operation", -->makeSomething?a=2);
是否可以使用 servlet 响应或 servlet 请求来获取此信息?
如果没有,我该怎么做?
【问题讨论】:
因为这是一个 SOAP 服务,所以没有 HTTP 读取请求。所有 SOAP 操作都是通过 HTTP PUT 方法完成的。我的建议是您安装类似 WireShark 并捕获 XML 请求,或者甚至更好地使用 SOAP UI 来捕获 XML 请求并查看实际请求。这将使您对如何实现您想要的目标有所了解。 你的问题不是很清楚。看起来您正在尝试将 HTTP 标头添加到 Web 服务请求中,然后才到达您的 Web 服务处理 bean。那是对的吗?您正在运行 JAX-WS 网络服务吗? “网络方法”是什么意思?您指的是 HTTP 操作还是实际的 Web 服务操作,例如 WSDL? 没有。当我发出请求时,我想通过 Http Servlet 响应或类似的方式将 Soap 消息响应添加到 http 标头。是的,我正在运行 jax-ws。 WebMethod 是我的 WebService 中的一个方法。 您想将完整的 SOAP 响应信封粘贴到 HTTP 标头中吗?为什么?不管是什么原因,由于浏览器对 HTTP 标头的大小有限制,您可能无法做到这一点。您是否对 SOAP 标头感兴趣? 我不想要完整的回复。只是有关肥皂内容消息的一些信息 【参考方案1】:您需要访问 HTTP 请求正文。只有一个警告:您只能读取一次流,这意味着您必须做一些技巧才能保持 SOAP 请求正常工作。看这里:
http://wetfeetblog.com/servlet-filer-to-log-request-and-response-details-and-payload/431
本示例介绍了读取 HTTP 请求,然后将原始数据向下传递到过滤器链。
HTH,马克
【讨论】:
以上是关于使用 WebFilter 从 XML 获取请求参数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 WebFilter 上配置 Spring DataBuffer 大小
使用 Tomcat,@WebFilter 不适用于 web.xml 中的 <filter-mapping>