Java — чтение с URL-адреса с использованием класса URLConnection
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-адресов не позволяют писать |
Теперь, после понимания методов. Шаги, связанные с вышеуказанным процессом
- Создание URL-адреса: создайте объект URL-адреса, используя любой из указанных конструкторов.
- Создать объект: вызовите вызов openConnection(), чтобы создать объект URLConnection.
- Отображение содержимого: либо используйте созданный выше объект для отображения информации о ресурсе, либо для чтения/записи содержимого файла на консоль с помощью bufferedReader и InputStream открытого соединения с использованием метода getInputStream().
- 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, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.