2012-05-04 4 views
1

요청을 받고, java에서 작업을 수행 한 다음 표준으로 응답을 반환 할 웹 서비스가 있습니다.보내기 전에 HTML 응답 편집

그러나 응답을 기대하는 클라이언트는 HTTP 응답에 메시지 끝에 두 개의 문자가 추가 될 것으로 기대하고 있습니다. (아무리해도 상관 없지만 현재는 \ n \ n이며 알 수없는 이유로 - 레거시 코드), 헤더 및 본문 외부.

현재 HTTP 메시지를 프록시에 전송하여 문자를 추가하고 메시지를 전달하지만 현재 프록시가 필요없는 java에서이 메시지를 전달할 수있는 방법을 알고 있습니까?

e.e. - 전체 HTML 응답에 액세스하여 편집하기 전에 편집 할 수 있습니까? 당신의 도움에 미리

감사합니다, 롭

편집 : 클라이언트는 브라우저가 아니라 응용 프로그램이 SOAP 메시지를 보낼.

+0

네, 그렇게 할 수 있습니다. 그것은 브라우저에 응답을 보내는 방법에 따라 다릅니다. – Ved

+0

응답은 브라우저로 보내지지 않고 응용 프로그램에서 서비스로 되돌아 오는 SOAP 메시지로 보내지 는가? – TheBloodGuy

+0

서블릿 스펙에서 이것을 실행하고 있습니까? 수코양이? 그렇다면 필터로 처리 할 수 ​​있습니다. – Krrose27

답변

0

우리는 결국 전체 SOAP 메시지 만 필요하므로 apache-cxf 인터셉터를 사용하게되었습니다. SoapMessage 내용을 문자열로 변환 한 나가는 인터셉터를 추가하고 두 문자를 추가하고 내용을 다시 설정하면 문제가 해결됩니다.

어쨌든 고마워!

0

서블릿 스펙에 따라 웹 서버로 실행한다고 가정하면 필터를 사용할 수 있습니다.

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 { 

    } 
} 
관련 문제