2011-10-18 29 views
0

我有一個庫函數如下:最佳方式導致

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

什麼是添加日誌記錄,以這種方法來記錄實際的URL響應的最佳方式。我需要閱讀InputStream然後重置它嗎?

(你可以假設,我只是想打印結果到控制檯這個例子的目的。)

回答

0

你可以流的內容複製到一個字節數組,使用ByteArrayOutputStream,登錄字節數組的內容,然後返回由字節數組構造的ByteArrayInputStream。儘管如此,這將整個內容放在記憶中。

1

如果您要使用記錄器庫並且請求很小,那麼您可以將整個InputStream讀入內存(例如,讀入ByteArrayOutputStream),然後記錄它,然後構造ByteArrayInputStream作爲方法結果。

如果請求很大,應該將其轉儲到某個文件或數據庫blob的某處。您可以繼承FilterInputStream並轉儲數據流。

在大多數情況下,您不能重置http流。