1

私は Java でサーブレットを作成しています。これは基本的に、Requests ボディに XML を含むリクエストを取得し、XML のいくつかを変更し、新しい XML を使用してリクエストを同じ上の別のサーブレットにリダイレクト/前置きします。サーバーですが、別の Web アプリ上にあります。

新しい XML を使用してリクエストをリダイレクト/フォアワードするにはどうすればよいですか? コード例はどこにありますか?

これは私がこれまでに持っているものです:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
   String body = getBody(request);
   MapXml mapXml = new MapXml(body,
               "C:\\Projects\\XmlMapper\\output.xml","C:\\Projects\\XmlMapper\\output\\");
   String outputXml = mapXml.getOutputXml();
}
public static String getBody(HttpServletRequest request) throws IOException {
    String body = null;
    StringBuilder stringBuilder = new StringBuilder();
    BufferedReader bufferedReader = null;
    try {
        InputStream inputStream = request.getInputStream();
        if (inputStream != null) {
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            char[] charBuffer = new char[128];
            int bytesRead = -1;
            while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
                stringBuilder.append(charBuffer, 0, bytesRead);
            }
        } else {
            stringBuilder.append("");
        }
    } catch (IOException ex) {
        throw ex;
    } finally {
        if (bufferedReader != null) {
            try {
                bufferedReader.close();
            } catch (IOException ex) {
                throw ex;
            }
        }
    }
    body = stringBuilder.toString();
    return body;
}

そして、ここから先に進む方法がわかりません。私はサーブレットの世界に不慣れです..ありがとう!!! 乾杯:)

4

3 に答える 3

0

xml はリクエストの小さなボディではないため、クライアントに新しい xml を送信させる必要があります。またはあなたが行うことができます:

  1. 同じデータベースまたはキャッシュをリモート Web サービスと共有し、データベースまたはキャッシュ内のデータのキーを転送します。

  2. HttpClient を使用して、変更された xml を使用してクライアントの要求を送信し、リモート サービスからの応答をクライアントに返します。

XML本体が小さいことを確認できる場合は、GETメソッドを使用してリクエストをリモートサーバーに転送できます

于 2013-08-21T11:18:40.497 に答える
0

最初にいくつかの可能性を除外しましょう:

  1. response.sendRedirect("/otherapp/servlet.do")POSTデータを別のWebアプリに送信できないため、できません。
  2. session別の webapp にデータを送信しているため、使用できません。
  3. もちろん、GET を使用してクエリ文字列で完全な XML を渡すことはできません。

これらの可能性が除外されたら、私が考えることができる唯一の方法は次のとおりです。

  1. 応答として変更された XML と他の Web アプリケーションのサーブレットの URL を使用して、呼び出しページに戻ります。
  2. 単純な Javascript を使用して、呼び出し元のページが変更された XML を他の Web アプリケーションのサーブレットにすぐに POST できるようにします。
于 2013-08-21T11:25:51.400 に答える