2012-05-04 9 views
1

リクエストを受け取り、javaでアクションを実行してから、標準として応答を返すWebサービスがあります。送信前にHTML応答を編集する

しかし、応答を期待するクライアントは、メッセージの最後に2文字を追加することを期待しています(これは問題ではありません。現在のところ\ n \ nです。レガシーコード)、ヘッダーとボディーの外側。

現在のところ、HTTPメッセージを最初にプロキシに送信することで、文字を追加してメッセージを転送しますが、プロキシを必要とせずにjavaでこれを行う方法を知っている人はいますか?

I.e. - 完全なHTMLレスポンスにアクセスして送信前に編集することはできますか?あなたの助けを事前に

おかげで、 ロブ

編集:クライアントはブラウザが、SOAPメッセージを送信するアプリケーションではありません。

+0

はい、できます。それはどのようにブラウザに応答を送信するかによって異なります。 – Ved

+0

応答はブラウザには送信されず、アプリケーションからサービスへのSOAPメッセージとして返されます。 – TheBloodGuy

+0

これをサーブレット仕様で実行していますか? Tomcat?もしそうなら、あなたはフィルターでそれを行うことができます。 – Krrose27

答えて

0

最後に完全なSOAPメッセージが必要なので、apache-cxfインターセプタを使用しました。 SoapMessageのコンテンツを文字列に変換し、2つの文字を追加してコンテンツを再設定する発信インターセプタを追加することで、問題は修正されました。

ありがとうございました!

0

これがサーブレット仕様に従ったWebサーバーとして実行されていると仮定すると、フィルタを使用できます。

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 { 

    } 
} 
関連する問題