アプリケーションで Apache HttpClient 4.2.3 を使用しています。HTTP 呼び出しの応答を次のように保存します。
HttpResponse httpResponse = (DefaultHttpClient)httpClient.execute(httpRequest);
応答本文は、4.x API の InputStream です。
InputStream responseStream = httpResponse.getEntity().getContent();
私の問題は、アプリケーションのさまざまなポイントで、応答本文を文字列および byte[] として読み取る必要があることです。しかし、Apache が使用する InputStream は EofSensorInputStream です。つまり、ストリーム EOF に達すると、閉じられます。とにかく、文字列とバイト [] 表現を複数回取得し、ストリームを閉じないことはできますか?
バイト配列を新しい ByteArrayInputStream にラップし、それをリクエスト本文として設定しようとしましたが、応答本文が数ギガに達する可能性があるため、機能しません。これも試してみましたが、元の応答ストリームがまだ閉じられていることに気付きました。
どんなポインタでも大歓迎です。
編集: 関連する注意事項として、ストリームを消費せずに、または消費を逆にすることで、InputStream の長さを見つけることができれば、それも素晴らしいことです。