1

リクエストを受け取り、Java でアクションを実行し、標準としてレスポンスを返す Web サービスがあります。

ただし、応答を期待しているクライアントは、HTTP 応答のメッセージの末尾に 2 文字が追加されていることを期待しています (いずれにせよ、問題ではありません。現在は \n\n だけです。理由は不明です。これはレガシー コードです)。ヘッダーとボディの外側。

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

つまり、送信前に完全な HTML 応答にアクセスして編集することはできますか?

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

4

2 に答える 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 {

    }
}
于 2012-05-04T12:57:45.620 に答える
0

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

とにかくありがとう!

于 2012-12-21T09:22:39.653 に答える