Есть ли способ изменить тип содержимого входящего SOAP-запроса? Я пытаюсь изменить тип содержимого с text / xml на application / soap + xml.
Мой класс фильтра
public class SOAPFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
SOAPRequestWrapper requestWrapper = new SOAPRequestWrapper((HttpServletRequest) request);
filterChain.doFilter(requestWrapper, response);
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
Мой запрос Wrapper
public class SOAPRequestWrapper extends HttpServletRequestWrapper {
private ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
private Map headerMap;
public SOAPRequestWrapper(HttpServletRequest request) {
super(request);
System.out.println("In Wrapper");
}
@Override
public Enumeration<String> getHeaders(String name) {
System.out.println("In method");
List<String> headerVals = Collections.list(super.getHeaders(name));
int index = 0;
for (String value : headerVals) {
headerVals.set(index, value.replaceAll("text/xml", "application/soap+xml"));
index++;
}
return Collections.enumeration(headerVals);
}
@Override
public String getHeader(String name) {
System.out.println("In method1");
String headerValue = super.getHeader(name);
if ("Content-Type".equalsIgnoreCase(name)) {
return headerValue.replaceAll("text/xml", "application/soap+xml");
}
return headerValue;
}
}
Ни одно из утверждений не печатается в моих журналах, кроме одного в конструкторе оболочки. Я что-то здесь упускаю?