Лучший способ записать результаты java.net.URL - PullRequest
1 голос
/ 18 октября 2011

У меня есть функция библиотеки следующим образом:

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

Какой лучший способ добавить ведение журнала в этот метод для записи фактического ответа URL. Должен ли я прочитать InputStream и затем сбросить его?

(Можно предположить, что я просто хочу вывести результаты на консоль ради примера).

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Если бы вы использовали библиотеку логгеров и запросы были бы небольшими, то вы могли бы прочитать весь InputStream в память (например, в ByteArrayOutputStream), затем записать его, а затем создать ByteArrayInputStream в качестве результата метода.

Если запросыбольшой, вы должны поместить его куда-нибудь в файл или в блоб базы данных.Вы можете создать подкласс FilterInputStream и вывести поток данных.

В большинстве случаев сброс HTTP-потока невозможен.

0 голосов
/ 18 октября 2011

Вы можете скопировать содержимое потока в байтовый массив, используя ByteArrayOutputStream, записать содержимое байтового массива, а затем вернуть ByteArrayInputStream, созданный из байтового массива. Это помещает все содержимое в память, хотя.

...