Изменить ответ HTML перед отправкой
У меня есть веб-сервис, который собирается получить запрос, выполнить действие в Java, а затем вернуть ответ в качестве стандарта.
Однако клиент, ожидающий ответ, ожидает, что в ответ HTTP будет добавлено два символа к концу сообщения (любые, это не имеет значения, в настоящее время просто \ n \ n, и по неизвестным мне причинам - это устаревший код), за пределами заголовков и тела.
В настоящее время это делается путем отправки HTTP-сообщения сначала прокси-серверу, который добавляет символы и пересылает сообщение, но знает ли кто-нибудь, как это можно сделать в Java без использования прокси-сервера?
Т.е. могу ли я получить доступ к полному HTML-ответу, чтобы отредактировать его перед отправкой?
Заранее спасибо за помощь, Роб
Изменить: клиент не браузер, а приложение, отправляющее SOAP-сообщения.
2 ответа
В итоге мы использовали перехватчики apache-cxf, так как в конце нам потребовалось только полное сообщение SOAP. Добавив исходящий перехватчик, который преобразовал содержимое SoapMessage в строку, добавил два символа и снова установил содержимое, наша проблема была исправлена.
Спасибо, в любом случае!
Предполагая, что это выполняется как веб-сервер, следуя спецификации сервлета, вы можете использовать фильтр.
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
@WebFilter(asyncSupported = true, filterName = "LegacyAppender", urlPatterns = { "/paths/tofile" })
public class AppendFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
chain.doFilter(req, resp);
HttpServletResponse hsr = (HttpServletResponse) resp;
hsr.getWriter().print("\r\n");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}