2010-10-12 65 views
1

我有一個基於AbstractJDomPayloadEndpoint的Spring Web服務。此服務工作正常,除了我的客戶端需要將HTTP標頭Content-Type設置爲正確的字符集(本例中爲utf-8)。我無法找到我可以配置的地方。Spring-WS:指定內容類型

我試着寫一個簡單的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

是的,您的過濾器代碼將失敗,因爲到doFilter()完成時,響應將被完全提交,並且您將不被允許更改內容類型標題。

我建議寫一個HttpServletResponseWrapper的子類,覆蓋setContentType()和/或setCharacterEncoding()方法將值設置爲所需的值。然後您將包裝的實例(包裝原始響應)傳遞給doFilter()

+1

謝謝!爲什麼我沒有想到HttpServletResponseWrapper?不過,有一種方法可以直接使用正確的編碼來配置Spring-WS, – Guillaume 2010-10-14 06:56:42