Я пытаюсь написать класс, который читает HTTP-запросы и ответы и анализирует их. Поскольку заголовки представляют собой обычный текст, казалось, что их проще всего прочитать с помощью BufferedReader и метода readLine . Очевидно, это не подходит для тела данных, поскольку оно может быть двоичным, поэтому я хочу переключиться на чтение необработанных байтов после того, как будут прочитаны заголовки.
Прямо сейчас я делаю что-то вроде этого:
InputStream input=socket.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(input));
BufferedInputStream binstream=new BufferedInputStream(input);
Проблема в том, что BufferedReader заранее читает и поглощает все двоичные данные из потока, прежде чем у меня будет возможность получить их с помощью binstream.
Есть ли способ предотвратить его чтение за символом новой строки для каждого вызова readLine ? Или есть лучший способ прочитать отдельные строки текста ASCII после необработанных двоичных данных?