FileInputStream または ObjectInputStream のいずれかである可能性のある InputStream からデータを読み取ろうとしています。これを実現するために、ストリームのクローンを作成してオブジェクトを読み取ろうとし、例外が発生した場合は、apache commons io を使用してストリームを文字列に変換したいと考えました。
PipedInputStream in = new PipedInputStream();
TeeInputStream tee = new TeeInputStream(stream, new PipedOutputStream(in));
Object body;
try {
ObjectInput ois = new ObjectInputStream(tee);
body = ois.readObject();
} catch (Exception e) {
try {
body = IOUtils.toString(in, Charset.forName("UTF-8"));
} catch (Exception e2) {
throw new MarshallerException("Could not convert inputStream");
}
}
残念ながら、ストリームを文字列に変換しようとすると、プログラムが着信データを待機するため、これは機能しませんin
。