java - Spring -WS : specifying the Content-Type

标签 java servlets http-headers spring-ws

我有一个基于 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/

相关文章:

java - 如何从数组列表中删除单击按钮时的 ListView 项目?

java - 即使使用 servlet 也无法访问 web-inf 文件夹中的 jsp 页面

java - 从 servlet API 设置时是否需要转义 cookie 值?

java - 无法使用 JMF 播放 mp3 流

php - 下载名称与存储名称不同的文件

redirect - 如何删除 303 重定向的谷歌搜索结果?

java - Spring Data Rest 多对多 POST

java - Tomcat 管理器部署位于服务器上的 WAR 文件

c# - 如何为 WCF 服务添加跨域支持

java - WebView 中视频的全屏按钮不起作用