我有一个基于 AbstractJDomPayloadEndpoint
的 Spring Web 服务。该服务工作正常,只是我的客户端需要将 HTTP header Content-Type
设置为正确的字符集(在我的例子中为 utf-8)。我找不到在哪里可以配置它。
我尝试编写一个简单的 servlet Filter
:
chain.doFilter(request, response);
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Content-Type", "text/xml; charset=utf-8");
但这根本不会改变标题。我怀疑内容类型 header 是由 Spring-WS 设置的,并且响应已提交,因此我在过滤器中设置的任何内容都不会产生影响。
我的应用程序服务器是WebLogic 9.2.3。
最佳答案
是的,您的过滤器代码将会失败,因为当 doFilter()
完成时,响应将已完全提交,并且您将无法更改内容类型 header 。
我建议编写 HttpServletResponseWrapper
的子类,重写 setContentType()
和/或 setCharacterEncoding()
方法以将值设置为您想要的值。然后,您将包装器的实例(包装原始响应)传递给 doFilter()
。
关于java - Spring -WS : specifying the Content-Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914807/