记录java.net.URL结果的最佳方法

时间:2011-10-18 14:25:00

标签: java logging inputstream

我有一个库函数如下:

public static InputStream getResource(String url) throws MalformedURLException,
    IOException {
    return new URL(url).openConnection().getInputStream();
}

将记录添加到此方法以记录实际网址响应的最佳方法是什么。我是否必须读取InputStream然后重置它?

(你可以假设我只是想把这个结果打印到控制台上。)

2 个答案:

答案 0 :(得分:1)

如果您使用记录器库并且请求很小,那么您可以将整个InputStream读入内存(例如,进入ByteArrayOutputStream),然后记录它,然后构造ByteArrayInputStream作为方法结果。

如果请求很大,您应该将其转储到文件或数据库blob中。您可以继承FilterInputStream并转储数据流。

在大多数情况下,您无法重置http流。

答案 1 :(得分:0)

您可以使用ByteArrayOutputStream将流的内容复制到字节数组,记录字节数组的内容,然后返回从字节数组构造的ByteArrayInputStream。但是,这会将整个内容放在内存中。