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