Является ли URL.openStream () таким же, как respone.getEntity (). GetContent ()? - PullRequest
0 голосов
/ 02 июля 2019

Есть файл, который будет загружен, когда я сделаю get запрос к конкретному URL.Я могу получить InputStream с обеих сторон.

Метод 1

Использование класса URL в пакете java.net.

java.net.URL url = new URL(downloadFileUrl);
InputStream inputStream = url.openStream();

Метод 2

Использование класса HttpClient Apache.

org.apache.http.impl.client.CloseableHttpClient httpclient = new CloseableHttpClient();
HttpGet request = new HttpGet(url);
CloseableHttpResponse response = httpclient.execute((HttpUriRequest)request);
InputStream inputStream = response.getEntity().getContent();

Одинаковы ли эти методы?Если не как?Какой метод предпочтителен в целом или в конкретной ситуации?

Приведенные мною примеры упрощены.Предположим, я выполнил необходимые конфигурации с объектами URL и HttpClient, чтобы получить успешный ответ.

1 Ответ

1 голос
/ 02 июля 2019

Оба метода возвращают входной поток для чтения из соединения. Нет разницы между этими методами. Поскольку HttpClient является сторонней библиотекой, необходимо проверять наличие уязвимостей и постоянно обновлять библиотеку.

Разница лишь в том, что HttpClient поддерживает только протокол HTTP (s), тогда как URLConnection можно использовать и для других протоколов, таких как FTP

С точки зрения функциональности Apache HttpClient имеет более тонкие настройки, чем URLConnection

...