Изменить ответ 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 {

    }
}
Другие вопросы по тегам