2010-10-12 2 views
1

У меня есть Spring Webservice на основе AbstractJDomPayloadEndpoint. Эта служба работает нормально, за исключением того, что моему клиенту нужен HTTP-заголовок Content-Type, который будет установлен в правильную кодировку (utf-8 в моем случае). Я не могу найти, где я могу это настроить.Spring-WS: укажите Content-Type

Я пытался писать простой сервлет Filter:

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

Но это не изменяет заголовки на всех. Я подозреваю, что заголовок типа контента установлен Spring-WS, и ответ завершен, поэтому ничего, что я установил в фильтре, не повлияет.

Мой сервер приложений - WebLogic 9.2.3.

ответ

1

Да, ваш код фильтра не сработает, потому что к моменту завершения doFilter() ответ будет полностью зафиксирован, и вам не удастся изменить заголовок типа контента.

Предлагаю написать подкласс HttpServletResponseWrapper, переопределяя методы setContentType() и/или setCharacterEncoding(), чтобы установить значение в соответствии с тем, которое вы хотите. Затем вы передаете экземпляр обертки (которая обертывает исходный ответ) в doFilter().

+1

Спасибо! Почему я не думал о HttpServletResponseWrapper? Тем не менее, было бы неплохо настроить Spring-WS, чтобы напрямую использовать правильную кодировку ... – Guillaume