我通过
因此,我无法使用
在这种情况下,最好的解决方案是什么,既能保留使用流的好处,又能帮助达到期望的结果:同时记录日志和解析响应?
编辑:将响应写入临时文件的解决方案不适合。
HttpURLConnection
向服务器发起http get请求并需要两次读取响应(InputStream
):一次用于记录日志,一次用于解析响应。返回的InputStream
是org.apache.harmony.luni.internal.net.www.protocol.http.ChunkedInputStream
的实例,该实例不支持标记(is.markSupported()
返回false
)。因此,我无法使用
mark()
和reset()
流,而在将响应写入日志后,我也无法解析它。当然,我可以将响应读取一次到String
或其他内容中,将其记录下来,然后稍后进行解析。但是,当我使用流时,我避免了潜在的OutOfMemomryError
,因为流处理缓冲而不是我自己。在这种情况下,最好的解决方案是什么,既能保留使用流的好处,又能帮助达到期望的结果:同时记录日志和解析响应?
编辑:将响应写入临时文件的解决方案不适合。
String
转换为JSON格式,请将其传递给解码方法,然后将返回的String
传递给log()
和parse()
。像我之前提到的和另一个答案所述的那样,重复读取流非常糟糕。 - David Kroukampread()
的结果,因此有可能在每个缓冲区末尾处理垃圾数据。 - user207421log(bytes, 0, count);
以及parse(bytes, 0, count);
其中的count
是read()
方法返回的int
类型结果。 - user207421