Обзор класса URLConnection Java, пример программы

Обзор класса URLConnection Java, пример программыКласс URLConnection является классом общего назначения и предназначен для доступа к атрибутам удаленного ресурса.

Как только будет установлено соеди­нение с удаленным сервером, класс URLConnection можно использовать для просмотра свойств удаленного объекта, прежде чем переносить его локально. Эти атрибуты раскрываются в спецификации сетевого протокола HTTP и как таковые имеют смысл только для объектов типа URL, использующих протокол HTTP.

В классе URLConnection определяется несколько методов. Некоторые из них перечислены ниже:

int getContentLength() — возвращает длину в байтах содержимого, связанного с ресурсом. Если длина недоступна, возвращается значение — 1. Заметьте, функция возвращает тип int.

long getContentLengthLong() — возвращает длину в байтах содержимого, связанного с ресурсом. Если длина недоступна, возвращается значение — 1. Заметьте, функция возвращает тип long.

String getContentТype() — возвращает тип содержимого, обнаруженного в ре­сурсе. Это значение поля заголовка content-type. Возвращает пустое значение null, если тип содер­жимого недоступен.

long getDate() — возвращает время и дату ответа в миллисекундах, прошедших с 1 января 1970 г.

long getExpiration() — Возвращает время и дату срока действия ресурса в миллисекундах, прошедших с 1 января 1970 г. Если дата срока действия ресурса недоступна, возвраща­ется нуль.

String getHeaderField(int индекс) — возвращает значение поля заголовка по указанному индексу. (Индексы полей заголовков нумеруются, начиная с нуля). Если значение параметра индекс пре­вышает количество полей, то возвращается пустое значение null.

String getHeaderField(String имя_поля) — возвращает значение поля заголовка по указанному имен имя_поля. Если указанное поле не найдено, то воз­вращается пустое значение null.

String getHeaderFieldKey(int индекс) —  возвращает ключ поля заголовка по указанному индексу. (Индексы полей заголовков нумеруются, на­чиная с нуля.) Если значение параметра индекс пре­вышает количество полей, то возвращается пустое значение null.

Мap<String , List<String>> getHeaderFields() — возвращает отображение, содержащее все поля заголовков вместе с их значениями.

long getLastModified() — Возвращает время и дату последней модификации ресурса в миллисекундах, прошедших с 1 января 1970 г. Если эта информация недоступна, то возвращается нуль.

InputStream getInputStream() thorws IOException — возвращает поток ввода типа InputStream, привязанный к ресурсу. Этот поток ввода может использо­ваться для получения содержимого ресурса.

Обратите внимание на то, что в классе URLConnection определяется несколь­ко методов, управляющих информацией из заголовков. Заголовок состоит из пар ключей и значений, представленных в виде символьных строк.

Используя метод getHeaderField(), можно получить значение, связанное с ключом заголовка. Вызывая метод getHeaderField() , можно получить отображение, содержащее все заголовки. Несколько стандартных полей заголовков доступны непосред­ственно через такие методы, как getDate() и getContentType().

В следующем примере создается объект типа URLConnection с помощью мето­да openConnection(), вызываемого для объекта типа URL, а затем он применяет­ся для проверки свойств и содержимого документа:

В этой программе сначала устанавливается соединение по протоколу с сервером pro-java.ru через порт НТГР 80. Затем в ней выводятся несколько значений из заголовков и извлекается содержимое. Ради интереса попробуйте выполнить эту программу, наблюдая результаты ее выполнения. А затем попробуйте для сравнения выбрать другой веб-сайт.

Вот что получилось у нас: