У меня есть 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.
Да, ваш код фильтра завершится неудачно, так как к моменту завершения doFilter()
ответ будет полностью завершен, и вам не удастся изменить заголовок типа содержимого.
Я предлагаю написать подкласс HttpServletResponseWrapper
, переопределяя методы setContentType()
и/или setCharacterEncoding()
, чтобы установить значение в нужное вам значение. Затем вы передаете экземпляр обертки (которая обертывает исходный ответ) в doFilter()
.