Spring-WS:指定Content-Type

时间:2010-10-12 12:44:51

标签: java servlets http-headers spring-ws

我有一个基于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设置的,并且响应是提交的,所以我在过滤器中设置的任何内容都不会产生影响。

我的appserver是WebLogic 9.2.3。

1 个答案:

答案 0 :(得分:1)

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

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