我正在尝试编写一个读取 HTTP 请求和响应并解析它们的类。由于标题是普通文本,使用BufferedReader和readLine方法似乎最容易阅读它们。这显然不适用于数据主体,因为它可能是二进制的,所以我想在读取标头后切换到读取原始字节。
现在,我正在做这样的事情:
InputStream input=socket.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(input));
BufferedInputStream binstream=new BufferedInputStream(input);
问题是BufferedReader正在提前读取并吞噬流中的所有二进制数据,然后我才有机会使用 binstream 获取它。
有没有办法防止它在每次调用readLine时读取超出换行符的内容?或者有没有更好的方法来读取单行 ASCII 文本和原始二进制数据?