Java — чтение с URL-адреса с использованием класса URLConnection

Опубликовано: 15 Сентября, 2022

URLConnection — это абстрактный класс, подклассы которого образуют связь между пользовательским приложением и любым ресурсом в сети. Мы можем использовать его для чтения/записи из/в любой ресурс, на который ссылается объект URL. В основном есть два подкласса, которые расширяют класс URLConnection.

  • HttpURLConnection: если мы подключаемся к любому URL-адресу, который использует «http» в качестве протокола, тогда используется класс HttpURLConnection.
  • JarURLConnection: если мы пытаемся установить соединение с JAR-файлом в Интернете, используется JarURLConnection.

Как только соединение установлено и у нас есть объект URLConnection, мы можем использовать его для чтения или записи или получения дополнительной информации о том, когда страница/файл была изменена в последний раз, длина содержимого и т. д.

Но простое получение информации о состоянии не является истинным мотивом реального приложения. Мы стремимся получить информацию, обработать ее и отправить результаты обратно на сервер или просто отобразить необходимую информацию, полученную с сервера.

Иллюстрация:

Небольшое приложение, которое запрашивает у пользователя название фильма и, в свою очередь, возвращает рейтинг фильма на «IMDb» или возвращает все ссылки, связанные с этим фильмом. Всего этого можно добиться с помощью класса URLConnection.

Методы класса URLConnection

Метод Действие выполнено
получитьконтент() Извлекает содержимое URLConnection
получить кодирование содержимого () Возвращает значение поля заголовка кодировки содержимого.
получитьдлину содержимого() Возвращает длину поля заголовка контента
получитьдату() Возвращает значение даты в поле заголовка
получить заголовочные поля () Возвращает карту, содержащую значения различных полей заголовка в заголовке HTTP.
getHeaderField (целое я) Возвращает значение i -го индекса заголовка
getHeaderField (строковое поле) Возвращает значение поля с именем «поле» в заголовке.
получить входной поток () Возвращает входной поток в это открытое соединение, которое было внутри класса OutputStream.
получитьвыходнойпоток() Возвращает выходной поток для этого соединения класса OutputStream.
открытое соединение() Открывает соединение с указанным URL.
setAllowUserInteraction() Установка этого значения true означает, что пользователь может взаимодействовать со страницей. Значение по умолчанию верно.
setDefaultUseCaches() Устанавливает значение по умолчанию для поля useCache как заданное значение.
setDoInput() Устанавливает, разрешено ли пользователю вводить данные или нет
setDoOutput() Устанавливает, разрешено ли пользователю писать на странице. Значение по умолчанию — false, так как большинство URL-адресов не позволяют писать

Теперь, после понимания методов. Шаги, связанные с вышеуказанным процессом

  1. Создание URL-адреса: создайте объект URL-адреса, используя любой из указанных конструкторов.
  2. Создать объект: вызовите вызов openConnection(), чтобы создать объект URLConnection.
  3. Отображение содержимого: либо используйте созданный выше объект для отображения информации о ресурсе, либо для чтения/записи содержимого файла на консоль с помощью bufferedReader и InputStream открытого соединения с использованием метода getInputStream().
  4. Close Stream: закройте InputStream, когда закончите.

Реализация. Давайте посмотрим на пример программы, которая использует описанные выше методы для отображения полей заголовка, а также выводит исходный код всей страницы в окно консоли.

Выход:

Keep-Alive   :   [timeout=5, max=100]
null   :   [HTTP/1.1 200 OK]
Server   :   [Apache/2.4.18 (Ubuntu)]
Connection   :   [Keep-Alive]
Last-Modified   :   [Wed, 16 Nov 2016 06:49:55 GMT]
Date   :   [Wed, 16 Nov 2016 10:58:34 GMT]
Accept-Ranges   :   [bytes]
Cache-Control   :   [max-age=3]
ETag   :   ["10866-541657b07e4d7"]
Vary   :   [Accept-Encoding]
Expires   :   [Wed, 16 Nov 2016 10:58:37 GMT]
Content-Length   :   [67686]
Content-Type   :   

Complete source code of the URL is-
--------------------------------------------------

...source code of the page...

Эта статья предоставлена Rishabh Mahrsee . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.