最近inputStreamからデータを読み取ろうとしました。BufferedInputStreamとIOUtilsのtoByteArrayを読み取る
int length = getHeader("Content-Length");
byte[] buffer = new byte [length];
BufferedInputStream stream = new BufferedInputStream (servletRequest.getInputStream());
stream.read(buffer);
何らかの理由でデータが切り捨てられていました。私が次を試みたとき
buffer = IOUtils.toByteArray(servletRequest.getInputStream());
それは完璧に働いた。
誰でも問題の原因を洞察できますか?
@SotiriosDelimanolisコンテンツの長さが正確でない場合はどうなりますか? –
2つのもの。まず、あなたの 'getHeader'は何をしますか?それは正しい価値を戻していますか?次に、 'read(byte [])'はバッファに実際に何バイト読み込まれたかを示す 'int'値を返します。それがあなたが期待したものでない場合は、すべてを読み終えるまで、そのメソッド(またはオフセット付きのオーバーロード)をループする必要があります。これは 'toByteArray'のやり方です。 –
@TimBiegeleisenええ、おそらく問題です。 –