2012-01-25 4 views
1

サーブレットを介してプレーンテキストファイルをユーザーに送信しています。それを送る前に応答を読む

私はflatwormフレームワークを使用してフラットファイルを構築しています。ブラウザでファイルを受信しましたが、空です。ですから、私は送信前に出力ストリームを解析するデバッグを開始します。

私はサーブレットで送信する前に応答をどのように読み取ることができますか? OutputStreamInputStreamに変換する方法を尋ねるのと同じことだと思います。

私はすでにいつもByteArrayOutputStreamを伴う解決策を見て、私はサーブレットresponse.getOutputStream()に呼び出すときに知っているように、それは私にOutputStreamなくByteArrayOutputStreamを返します。

+0

ところで、この質問は「私がそれを(投稿を通じて)送る前に手紙をどのように読むのですか?」と類似していると考えることができます。自分で書いているのであれば、それを読んでください。あなたの秘書があなたのためにそれを書いているなら、彼/彼女にコピーを頼んでください(これを行う正確な最良の方法は書記官によって異なります)。 –

答えて

0

どこかに混乱があるようですが、私は正確にどこにいるのか分かりません。

OutputStreamで何ができますか?なぜ、あなたはそれに書き込むことができます、それはそれについてです。つまり、の場合は、出力ストリームを(ルックアップ)しているので、データを入力することはあなたの責任です。つまり、すでにデータがあることを意味します。

おそらくwriteをOutputStreamに直接呼び出すのではなく、このストリームをflatwormライブラリに渡します(出力を書き込みます)。その場合、そこにデバッグの「フック」があります。フラットワームは、ファイルを送信する任意の出力ストリームにファイルを書き出します。この場合、サーブレットのストリームを渡す代わりに、自分で作成したストリームを渡します。

これはByteArrayOutputStreamであるかもしれません。フラットワームメソッドが戻った後に、書き込まれたバイトを調べることができます。この時点で、レスポンスの出力ストリームに手動で書き込むことができます。または、多少トリッキーなことをして、独自のストリームラッパーを作成して、基本的なレスポンスストリームに直接書き込みますが、途中でログを記録し、フラットワームに渡す必要があります。

しかし結論としては、出力ストリームとやりとりしている場合、「あなたの」コードは既にローカルのどこかのデータを持っており、それはキャプチャ/アクセスの問題です。

+0

まず、返事のおかげで。 ByteArrayOutputStreamを検査するにはどうすればよいですか?ByteArrayOutputStreamをInputStreamに変換する必要がありますか? ありがとうございます – tt0686

+0

私はJVM 1.2を使用しているので、もう1つ、私はtoByteArrayメソッドを使用できません – tt0686

+0

明らかに、まだ 'toByteArray'メソッドが1.2([link](http://www.eli.sdsu .edu/doc/jdk1.2/docs/api/java/io/ByteArrayOutputStream.html))? AIUIのByteArrayOutputStreamの全体的なポイントは、出力を得ることができる配列に出力することです。そのメソッドがなければ、クラスが何をするかはわかりません。 –

関連する問題