我有一个库函数如下:
public static InputStream getResource(String url) throws MalformedURLException,
IOException {
return new URL(url).openConnection().getInputStream();
}
将记录添加到此方法以记录实际网址响应的最佳方法是什么。我是否必须读取InputStream然后重置它?
(你可以假设我只是想把这个结果打印到控制台上。)
答案 0 :(得分:1)
如果您使用记录器库并且请求很小,那么您可以将整个InputStream读入内存(例如,进入ByteArrayOutputStream),然后记录它,然后构造ByteArrayInputStream作为方法结果。
如果请求很大,您应该将其转储到文件或数据库blob中。您可以继承FilterInputStream
并转储数据流。
在大多数情况下,您无法重置http流。
答案 1 :(得分:0)
您可以使用ByteArrayOutputStream
将流的内容复制到字节数组,记录字节数组的内容,然后返回从字节数组构造的ByteArrayInputStream
。但是,这会将整个内容放在内存中。