HTTP リクエストとレスポンスを読み取って解析するクラスを作成しようとしています。ヘッダーは通常のテキストであるため、BufferedReaderとreadLineメソッドを使用して読み取るのが最も簡単なようです。データ本体はバイナリである可能性があるため、これは明らかに機能しません。そのため、ヘッダーが読み取られた後に生のバイトを読み取るように切り替えたいと思います。
今、私は次のようなことをしています:
InputStream input=socket.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(input));
BufferedInputStream binstream=new BufferedInputStream(input);
問題は、BufferedReaderが先読みして、binstream で取得する機会を得る前に、ストリームからすべてのバイナリ データを取得していることです。
readLineへの呼び出しごとに改行を超えて読み取らないようにする方法はありますか? または、生のバイナリ データに続く ASCII テキストの 1 行を読み取るためのより良い方法はありますか?