Класс URL представляет Универсальный Локатор Ресурса, указатель на "ресурс" во всемирной паутине. Ресурс может быть чем-то столь же простым как файлом или каталогом, или это может быть ссылка на более сложный объект, такой как запрос к базе данных или к поисковой системе. Больше информации о типах URL и их форматов может быть найдено в:
Вообще, URL может быть поврежден в несколько частей. Предыдущий пример URL указывает, что протокол, чтобы использовать http (Протокол передачи HyperText) и что информация находится на названной хост-машине www.socs.uts.edu.au. Информацию о той хост-машине называют /MosaicDocs-old/url-primer.html. Точное значение этого имени на хост-машине и зависимо от протокола и зависимый узел. Информация обычно находится в файле, но она могла быть сгенерирована на лету. Этот компонент URL вызывают компонентом пути.
URL может дополнительно определить "порт", который является номером порта, к которому соединение TCP делается на удаленной хост-машине. Если порт не определяется, порт по умолчанию для протокола используется вместо этого. Например, порт по умолчанию для http80. Альтернативный порт мог быть определен как:
URL, возможно, добавил к этому "фрагмент", также известный как "касательно" или "ссылка". Фрагмент обозначается резким символом знака "#" сопровождаемый большим количеством символов. Например,
http://java.sun.com/index.html#chapter1
Этот фрагмент не является технически частью URL. Скорее это указывает, что после того, как указанный ресурс получается, приложение определенно интересуется той частью документа, у которого есть тег chapter1 присоединенный к этому. Значение тега является определенным ресурсом.
Приложение может также определить "относительный URL", который содержит только достаточную информацию, чтобы достигнуть ресурса относительно другого URL. Относительные URL часто используются в пределах страниц HTML. Например, если содержание URL:
http://java.sun.com/index.html
содержавший в пределах этого относительный URL:
FAQ.html
это было бы сокращение для:
http://java.sun.com/FAQ.html
Относительный URL не должен определить все компоненты URL. Если протокол, имя хоста, или номер порта отсутствуют, значение наследовано от полностью указанного URL. Компонент файла должен быть определен. Дополнительный фрагмент не наследован.
Класс URL самостоятельно не кодирует или декодирует компоненты URL согласно механизму выхода, определенному в RFC2396. Это - обязанность вызывающей стороны закодировать любые поля, которых нужно оставить до вызова URL, и также декодировать любые оставленные поля, которые возвращаются из URL. Кроме того, потому что у URL нет никакого знания выхода URL, он не распознает эквивалентность между закодированной или декодируемой формой того же самого URL. Например, эти два URL:
http://foo.com/hello world/ and http://foo.com/hello%20world
считался бы не равным друг другу.
Отметьте, URI класс действительно выполняет выход своих компонентных полей при определенных обстоятельствах. Рекомендуемый способ управлять кодированием и декодированием URL состоит в том, чтобы использовать URI, и преобразовать между этими двумя классами использование toURI() и URI.toURL().
URLEncoder и URLDecoder классы могут также использоваться, но только для кодирования HTML-формы, которое не является тем же самым как схемой кодирования, определенной в RFC2396.
То же самое как openConnection(), за исключением того, что соединение будет сделано через указанный прокси; обработчики Протокола, которые не поддерживают proxing, проигнорируют параметр прокси и сделают нормальное соединение.
Создает a URL объект от указанного protocol, host, port число, и file.
host может быть выражен как имя хоста или литеральный IP-адрес. Если адрес литерала IPv6 используется, он должен быть включен в квадратные скобки ('[' и ']'), как определено RFC 2732; Однако, литеральный формат адреса IPv6 определил в RFC 2373: Архитектура Адресации Версии 6 IP также принимается.
Определение a port число -1 указывает, что URL должен использовать порт по умолчанию для протокола.
Если это - первый объект URL, создаваемый с указанным протоколом, потоковым объектом-обработчиком протокола, экземпляром класса URLStreamHandler, создается для того протокола:
Если приложение ранее установило экземпляр URLStreamHandlerFactory как потоковая фабрика обработчиков, тогда createURLStreamHandler метод того экземпляра вызывают со строкой протокола как параметр, чтобы создать потоковый обработчик протокола.
Если нет URLStreamHandlerFactory был все же установлен, или если фабрика createURLStreamHandler возвраты метода null, тогда конструктор находит значение системного свойства:
java.protocol.handler.pkgs
Если значение того системного свойства не null, это интерпретируется как список пакетов, разделенных вертикальным символом наклонной черты'|'. Конструктор пытается загрузить названный класс:
<package>.<protocol>.Handler
где <пакет> заменяется именем пакета, и <протокол> заменяется именем протокола. Если этот класс не существует, или если класс существует, но это не подкласс URLStreamHandler, тогда следующий пакет в списке пробуют.
Если предыдущий шаг не в состоянии найти обработчик протокола, то конструктор пытается загрузиться от пакета системного значения по умолчанию.
<system default package>.<protocol>.Handler
Если этот класс не существует, или если класс существует, но это не подкласс URLStreamHandler, тогда a MalformedURLException бросается.
Обработчики протокола для следующих протоколов, как гарантируют, будут существовать на пути поиска:-
http, https, ftp, file, and jar
Обработчики протокола для дополнительных протоколов могут также быть доступными.
Никакая проверка допустимости вводов не выполняется этим конструктором.
Создает URL из указанного protocol имя, host имя, и file имя. Порт по умолчанию для указанного протокола используется.
Этот метод эквивалентен вызову конструктора с четырьмя параметрами с параметрами быть protocol, host, -1, и file. Никакая проверка допустимости вводов не выполняется этим конструктором.
Создает a URL объект от указанного protocol, host, port число, file, и handler. Определение a port число -1 указывает, что URL должен использовать порт по умолчанию для протокола. Определение a handler из null указывает, что URL должен использовать потоковый обработчик по умолчанию для протокола, как обрисовано в общих чертах для: java.net.URL#URL (java.lang. Строка, java.lang. Строка, интервал, java.lang. Строка)
Если обработчик не является нулем и есть менеджер безопасности, менеджер безопасности checkPermission метод вызывают с a NetPermission("specifyStreamHandler") разрешение. Это может привести к SecurityException. Никакая проверка допустимости вводов не выполняется этим конструктором.
Создает URL, анализируя данную спецификацию в пределах указанного контекста. Новый URL создается из данного контекста URL и параметр спецификации как описано в RFC2396 "Универсальные Идентификаторы ресурсов: Универсальный * Синтаксис":
<scheme>://<authority><path>?<query>#<fragment>
Ссылка анализируется в схему, полномочия, путь, запрос и части фрагмента. Если компонент пути пуст и схема, полномочия, и компоненты запроса неопределены, то новый URL является ссылкой на действующий документ. Иначе, фрагмент и части запроса, существующие в спецификации, используются в новом URL.
Если компонент схемы определяется в данной спецификации и не соответствует схему контекста, то новый URL создается как абсолютный URL, основанный на одной только спецификации. Иначе компонент схемы наследован от контекста URL.
Если компонент полномочий присутствует в спецификации тогда, спецификация обрабатывается как абсолютная и полномочия спецификации, и путь заменит полномочия контекста и путь. Если компонент полномочий будет отсутствовать в спецификации тогда, то полномочия нового URL будут наследованы от контекста.
Если компонент пути спецификации начинается с символа наклонной черты "/" тогда, путь обрабатывается как абсолютный, и путь спецификации заменяет путь контекста.
Иначе, путь обрабатывается как относительный путь и добавляется к пути контекста, как описано в RFC2396. Кроме того, в этом случае путь канонизируется посредством удаления изменений каталога, произведенных происшествиями ".." и".".
Для более подробного описания парсинга URL обратитесь к RFC2396.
Параметры:
context - контекст, в котором можно проанализировать спецификацию.
spec - String проанализировать как URL.
Броски:
MalformedURLException - если никакой протокол не определяется, или неизвестный протокол находится, или spec является null.
Создает URL, анализируя данную спецификацию с указанным обработчиком в пределах указанного контекста. Если обработчик является нулем, парсинг происходит как с двумя конструкторами параметра.
Параметры:
context - контекст, в котором можно проанализировать спецификацию.
spec - String проанализировать как URL.
handler - потоковый обработчик для URL.
Броски:
MalformedURLException - если никакой протокол не определяется, или неизвестный протокол находится, или spec является null.
SecurityException - если менеджер безопасности существует и checkPermission метод не позволяет определять потоковый обработчик.
Получает номер порта по умолчанию протокола, связанного с этим URL. Если схема URL или URLStreamHandler для URL не определяют номер порта по умолчанию, то-1 возвращается.
Получает имя хоста этого URL, если применимый. Формат узла соответствует RFC 2732, то есть для литерального адреса IPv6, этот метод возвратит адрес IPv6, включенный в квадратные скобки ('[' и ']').
Получает имя файла этого URL. Возвращенная часть файла будет тем же самым как getPath(), плюс связь значения getQuery(), если любой. Если нет никакой части запроса, этого метода и getPath() возвратит идентичные результаты.
Возвраты:
имя файла этого URL, или пустая строка, если Вы не существуете
Сравнивает этот URL для равенства с другим объектом.
Если данным объектом не является URL тогда, этот метод сразу возвращается false.
Два объекта URL равны, если они имеют тот же самый протокол, узлы стандартного эквивалента, имеют тот же самый номер порта на узле, и тот же самый файл и фрагмент файла.
Два узла считают эквивалентными, если оба имени хоста могут быть разрешены в те же самые IP-адреса; еще, если любое имя хоста не может быть разрешено, имена хоста должны быть равными без отношения, чтобы случиться; или оба имени хоста, равные нулю.
Так как сравнение узлов требует разрешения имени, эта работа является работой блокирования.
Отметьте: определенное поведение для equals как известно, непоследователен с виртуальным хостингом в HTTP.
Возвраты a URI эквивалентный этому URL. Этот метод функционирует таким же образом как new URI (this.toString()).
Отметьте, любой экземпляр URL, который выполняет RFC 2396, может быть преобразован в URI. Однако, некоторые URL, которые не находятся строго в соответствии, не могут быть преобразованы в URI.
Возвраты:
экземпляр URI, эквивалентный этому URL.
Броски:
URISyntaxException - если этот URL не форматируется строго согласно к RFC2396 и не может быть преобразован в URI.
Нужно отметить, что экземпляр URLConnection не устанавливает фактическое сетевое соединение на создании. Это произойдет только, вызывая URLConnection.connect ().
Если для протокола URL (такого как HTTP или JAR), там существует общественность, специализированный подкласс URLConnection, принадлежащий одному из следующих пакетов или одному из их подпакетов: java.lang, java.io, java.util, java.net, возвращенное соединение будет иметь тот подкласс. Например, для HTTP HttpURLConnection будет возвращен, и для JAR будет возвращен JarURLConnection.
То же самое как openConnection(), за исключением того, что соединение будет сделано через указанный прокси; обработчики Протокола, которые не поддерживают proxing, проигнорируют параметр прокси и сделают нормальное соединение. Вызов этого метода вытесняет настройки ProxySelector системы по умолчанию.
Параметры:
proxy - Прокси, через который будет сделано это соединение. Если прямая связь требуется, Прокси. NO_PROXY должен быть определен.
Возвраты:
a URLConnection к URL.
Броски:
IOException - если исключение ввода-вывода происходит.
SecurityException - если менеджер безопасности присутствует, и у вызывающей стороны нет разрешения, чтобы соединиться с прокси.
IllegalArgumentException - будет брошен, если прокси будет нулем, или у прокси есть неправильный тип
Получает содержание этого URL. Этот метод является сокращением для:
openConnection().getContent(Class[])
Параметры:
classes - массив типов Java
Возвраты:
объект контента этого URL, который является первым соответствием типов, определенных в массиве классов. нуль, если ни один из требуемых типов не поддерживается.
Броски:
IOException - если исключение ввода-вывода происходит.
Устанавливает приложение URLStreamHandlerFactory. Однажды этот метод можно вызвать самое большее в данной виртуальной машине Java.
URLStreamHandlerFactory экземпляр используется, чтобы создать потоковый обработчик протокола из имени протокола.
Если есть менеджер безопасности, этот метод первые вызовы менеджер безопасности checkSetFactory метод, чтобы гарантировать работу позволяется. Это могло привести к SecurityException.