Spring-WS:指定Content-Type

我有一个基于AbstractJDomPayloadEndpoint的Spring Web服务。 此服务工作正常,但我的客户端需要将HTTP标头Content-Type设置为正确的字符集(在我的情况下为utf-8)。 我无法找到我可以配置的地方。

我尝试编写一个简单的servlet Filter

 chain.doFilter(request, response); HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.setHeader("Content-Type", "text/xml; charset=utf-8"); 

但这根本不会改变标题。 我怀疑内容类型标头是由Spring-WS设置的,并且响应是提交的,因此我在filter中设置的任何内容都不会产生影响。

我的appserver是WebLogic 9.2.3。

是的,您的filter代码将失败,因为在doFilter()完成时,响应将完全提交,并且您将无法更改内容类型标头。

我建议编写HttpServletResponseWrapper的子类,重写setContentType()和/或setCharacterEncoding()方法,将值设置为你想要的值。 然后,将包装器的实例(包装原始响应)传递给doFilter()