Spring-WS: указание Content-Type

1

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

Я попробовал написать простой сервлет Filter:

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

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

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

Теги:
servlets
http-headers
spring-ws

1 ответ

1
Лучший ответ

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню