Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class URI extends Object implements Comparable<URI>, Serializable
Кроме некоторых незначительных отклонений, отмеченных ниже, экземпляр этого class представляет ссылку URI как определено
[scheme:] специфичная часть схемы [фрагмент #]где квадратные скобки [...] формируют рисунок дополнительные компоненты и символы : и стенд # для себя.
Абсолютный URI определяет схему; URI, который не является абсолютным, как говорят, относителен. URI также классифицируются согласно тому, являются ли они непрозрачными или иерархическими.
Непрозрачный URI является абсолютным URI, специфичная для схемы часть которого не начинается с символа наклонной черты ('/'). Непрозрачные URI не подвергаются дальнейшему парсингу. Некоторые примеры непрозрачных URI:
mailto:java-net@java.sun.com news:comp.lang.java urn:isbn:096139210x
Иерархический URI является или абсолютным URI, специфичная для схемы часть которого начинается с символа наклонной черты, или относительного URI, то есть, URI, который не определяет схему. Некоторые примеры иерархических URI:
http://java.sun.com/j2se/1.3/
docs/guide/collections/designfaq.html#28
../../../demo/jfc/SwingSet2/src/SwingSet2.java
file:///~/calendar
Иерархический URI подвергается дальнейшему парсингу согласно синтаксису
[scheme:] [полномочия //] [путь] [запрос ?] [фрагмент #]где символы :, /, ?, и # обозначают себя. Специфичная для схемы часть иерархического URI состоит из символов между компонентами фрагмента и схемой.
Компонент полномочий иерархического URI, если определено, или основан на сервере или основан на реестре. Основанные на сервере полномочия анализируют согласно знакомому синтаксису
[пользователь-info@] узел [порт :]где символы @ и : обозначают себя. Почти все использующиеся в настоящее время схемы URI основаны на сервере. Компонент полномочий, который не анализирует таким образом, как полагают, основан на реестре.
Компонент пути иерархического URI, как самостоятельно говорят, является абсолютным, если он начинается с символа наклонной черты ('/'); иначе это относительно. Путь иерархического URI, который является или абсолютным или определяет полномочия, является всегда абсолютным.
Все сказали, тогда, у экземпляра URI есть следующие девять компонентов:
В приведенном примере любой определенный компонент или неопределен или определяется с помощью отличного значения. Неопределенные строковые компоненты представляются null, в то время как неопределенные целочисленные компоненты представляются -1. Строковый компонент может быть определен, чтобы иметь пустую строку как ее значение; это не эквивалентно тому компоненту, являющемуся неопределенным.
Компонент Ввести схема String специфичная часть схемы String полномочия String пользовательская информация String узел String порт int путь String запрос String фрагмент String
Является ли определенный компонент или не определяется в экземпляре, зависит от типа представляемого URI. У абсолютного URI есть компонент схемы. Непрозрачный URI имеет схему, специфичную для схемы часть, и возможно фрагмент, но не имеет никаких других компонентов. У иерархического URI всегда есть путь (хотя это может быть пусто), и специфичная часть схемы (который, по крайней мере, содержит путь), и может иметь любой из других компонентов. Если компонент полномочий будет присутствовать и будет основан на сервере тогда, то компонент узла будет определен и пользовательская информация, и компоненты порта могут быть определены.
Нормализация является процессом удаления ненужных сегментов "." И ".." от компонента пути иерархического URI. Каждый сегмент "." просто удаляется. Сегмент ".." удаляется, только если ему предшествует non-".." сегмент. Нормализация не имеет никакого эффекта на непрозрачные URI.
Разрешение является процессом разрешения одного URI против другого, основного URI. Получающийся URI создается из компонентов обоих URI, таким образом определенных RFC 2396, беря компоненты от основного URI для не определенных в оригинале. Для иерархических URI путь оригинала разрешается против пути основы и затем нормализуется. Результат, например, разрешения
docs/guide/collections/designfaq.html#28 (1)против основного URI http://java.sun.com/j2se/1.3/ является URI результата
http://java.sun.com/j2se/1.3/docs/guide/collections/designfaq.html#28Разрешение относительного URI
../../../demo/jfc/SwingSet2/src/SwingSet2.java (2)против этого результата урожаи, поочередно,
http://java.sun.com/j2se/1.3/demo/jfc/SwingSet2/src/SwingSet2.javaРазрешение и абсолютных и относительных URI, и и абсолютных и относительных путей в случае иерархических URI, поддерживается. Разрешение URI, file:///~calendar против любого другого URI просто приводит к исходному URI, так как это абсолютно. Разрешение относительного URI (2) выше против относительного основного URI (1) урожаи нормализованный, но все еще относительный, URI
demo/jfc/SwingSet2/src/SwingSet2.java
Преобразование абсолютных адресов в относительные, наконец, является инверсией разрешения: Для любых двух нормализованных URI u и v,
u.relativize(u.resolve(v)).equals(v) иЭта работа часто полезна, создавая документ, содержащий URI, которые должны быть сделаны относительно основного URI документа везде, где возможный. Например, relativizing URI
u.resolve(u.relativize(v)).equals(v) .
http://java.sun.com/j2se/1.3/docs/guide/index.htmlпротив основного URI
http://java.sun.com/j2se/1.3приводит к относительному URI docs/guide/index.html.
альфа Буквенные символы US-ASCII, 'A' через 'Z' и 'a' через 'z' цифра Символы десятичной цифры US-ASCII, '0' через '9' alphanum Вся альфа и символы цифры незарезервированный Все alphanum символы вместе с теми в строке "_-!.~'()*" punct Символы в строке ",;:$&+=" зарезервированный Все punct символы вместе с теми в строке "?/[]@" оставленный Оставленные октеты, то есть, триплеты, состоящие из символа процента ('%'), сопровождаемый двумя шестнадцатеричными цифрами ('0'-'9', 'A'-'F', и 'a'-'f') другой Символы Unicode, которые не находятся в наборе символов US-ASCII, не являются управляющими символами (согласно Character.isISOControl
метод), и не пробелы (согласноCharacter.isSpaceChar
метод) (Отклонение от RFC 2396, который ограничивается US-ASCII),
Набор всех юридических символов URI состоит из незарезервированного, зарезервированного, которого оставляют, и другие символы.
Закодировать символы неUS-ASCII, когда URI обязан соответствовать строго RFC 2396, не содержа никакие другие символы.
К символам кавычек, которые иначе недопустимы в компоненте. Пользовательская информация, путь, запрос, и компоненты фрагмента отличаются немного, с точки зрения которого символы считают законными и недопустимыми.
Символ кодируется, заменяя это с последовательностью оставленных октетов, которые представляют тот символ в наборе символов UTF-8. Европейское обозначение денежной единицы ('\u20AC'), например, кодируется как "%E2%82%AC". (Отклонение от RFC 2396, который не определяет определенного набора символов.)
Запрещенный символ заключается в кавычки просто, кодируя это. Пробел, например, заключается в кавычки, заменяя это с "%20". UTF-8 содержит US-ASCII, следовательно для символов US-ASCII, это преобразование имеет точно эффект, требуемый RFC 2396.
Последовательность оставленных октетов декодируется, заменяя это с последовательностью символов, которые это представляет в наборе символов UTF-8. UTF-8 содержит US-ASCII, следовательно декодирование имеет эффект де-заключения в кавычки, любой заключил в кавычки символы US-ASCII так же как то из декодирования, любой закодировал символы неUS-ASCII. Если ошибка декодирования происходит, декодируя оставленные октеты тогда, ошибочные октеты заменяются '\uFFFD', заменяющим символом Unicode.
требует, чтобы любые запрещенные символы в его параметре были заключены в кавычки, и сохраняет любые оставленные октеты и другие символы, которые присутствуют. single-argument constructor
заключите запрещенные символы в кавычки как требуется компонентами, в которых они появляются. Символ процента ('%') всегда заключается в кавычки этими конструкторами. Любые другие символы сохраняются. multi-argument constructors
getRawUserInfo
, getRawPath
, getRawQuery
, getRawFragment
, getRawAuthority
, и getRawSchemeSpecificPart
методы возвращают значения своих соответствующих компонентов в необработанной форме, не интерпретируя оставленных октетов. Строки, возвращенные этими методами, могут содержать и оставленные октеты и другие символы, и не будут содержать запрещенных символов.
getUserInfo
, getPath
, getQuery
, getFragment
, getAuthority
, и getSchemeSpecificPart
методы декодируют любые оставленные октеты в своих соответствующих компонентах. Строки, возвращенные этими методами, могут содержать и другие символы и запрещенные символы, и не будут содержать оставленных октетов.
toString
метод возвращает строку URI со всей необходимой цитатой, но который может содержать другие символы.
toASCIIString
метод возвращает полностью заключенную в кавычки и закодированную строку URI, которая не содержит никакие другие символы.
new URI( u.toString()).equals(u) .Для любого URI u, который не содержит избыточный синтаксис, такой как две наклонных черты перед пустыми полномочиями (как в file:///tmp/ ) или двоеточие после имени хоста, но никакого порта (как в http://java.sun.com: ), и это не кодирует символы кроме тех, которые должны быть заключены в кавычки, следующие идентификационные данные также содержат:
new URI( u.getScheme(),во всех случаях,
u.getSchemeSpecificPart(),
u.getFragment())
.equals( u)
new URI( u.getScheme(),если u является иерархическим, и
u.getUserInfo(), u .getAuthority(),
u.getPath(), u .getQuery(),
u.getFragment())
.equals( u)
new URI( u.getScheme(),если u является иерархическим и не имеет или никаких полномочий или основанных на сервере полномочий.
u.getUserInfo(), u.getHost(), u .getPort(),
u.getPath(), u .getQuery(),
u.getFragment())
.equals( u)
Концептуальное различие между URI и URL отражается в различиях между этим class и URL
class.
Экземпляр этого class представляет ссылку URI в синтаксическом смысле, определенном RFC 2396. URI может быть или абсолютным или относительным. Строка URI анализируется согласно универсальному синтаксису без отношения к схеме, если таковые вообще имеются, который это определяет. Никакой поиск узла, если таковые вообще имеются, не выполняется, и никакой зависимый от схемы потоковый обработчик не создается. Равенство, хеширование, и сравнение определяются строго с точки зрения символьного контента экземпляра. Другими словами экземпляр URI немного больше чем структурированная строка, которая поддерживает синтаксические, независимые от схемы операции сравнения, нормализации, разрешения, и преобразования абсолютных адресов в относительные.
Экземпляр URL
class, в отличие от этого, представляет синтаксические компоненты URL вместе с частью информации, запрошенной, чтобы получить доступ к ресурсу, который это описывает. URL должен быть абсолютным, то есть, он должен всегда определять схему. Строка URL анализируется согласно ее схеме. Потоковый обработчик всегда устанавливается для URL, и фактически невозможно создать экземпляр URL для схемы, для которой никакой обработчик не доступен. Равенство и хеширование зависят и от схемы и от Интернет-адреса узла, если любой; сравнение не определяется. Другими словами URL является структурированной строкой, которая поддерживает синтаксическую работу разрешения так же как сетевые операции ввода-вывода поиска узла и открытия соединения с указанным ресурсом.
Конструктор и Описание |
---|
URI(String str)
Создает URI, анализируя данную строку.
|
URI(String scheme, String ssp, String fragment)
Создает URI из данных компонентов.
|
URI(String scheme, String userInfo, String host, int port, String path, String query, String fragment)
Создает иерархический URI из данных компонентов.
|
URI(String scheme, String host, String path, String fragment)
Создает иерархический URI из данных компонентов.
|
URI(String scheme, String authority, String path, String query, String fragment)
Создает иерархический URI из данных компонентов.
|
Модификатор и Тип | Метод и Описание |
---|---|
int |
compareTo(URI that)
Сравнивает этот URI с другим объектом, который должен быть URI.
|
static URI |
create(String str)
Создает URI, анализируя данную строку.
|
boolean |
equals(Object ob)
Тесты этот URI для равенства с другим объектом.
|
Строка |
getAuthority()
Возвращает декодируемый компонент полномочий этого URI.
|
Строка |
getFragment()
Возвращает декодируемый компонент фрагмента этого URI.
|
Строка |
getHost()
Возвращает компонент узла этого URI.
|
Строка |
getPath()
Возвращает декодируемый компонент пути этого URI.
|
int |
getPort()
Возвращает номер порта этого URI.
|
Строка |
getQuery()
Возвращает декодируемый компонент запроса этого URI.
|
Строка |
getRawAuthority()
Возвращает необработанный компонент полномочий этого URI.
|
Строка |
getRawFragment()
Возвращает необработанный компонент фрагмента этого URI.
|
Строка |
getRawPath()
Возвращает необработанный компонент пути этого URI.
|
Строка |
getRawQuery()
Возвращает необработанный компонент запроса этого URI.
|
Строка |
getRawSchemeSpecificPart()
Возвращает необработанную специфичную для схемы часть этого URI.
|
Строка |
getRawUserInfo()
Возвращает необработанный компонент пользовательской информации этого URI.
|
Строка |
getScheme()
Возвращает компонент схемы этого URI.
|
Строка |
getSchemeSpecificPart()
Возвращает декодируемую специфичную для схемы часть этого URI.
|
Строка |
getUserInfo()
Возвращает декодируемый компонент пользовательской информации этого URI.
|
int |
hashCode()
Возвращает значение хэш-кода для этого URI.
|
boolean |
isAbsolute()
Говорит, является ли этот URI абсолютным.
|
boolean |
isOpaque()
Говорит, непрозрачен ли этот URI.
|
URI |
normalize()
Нормализует путь этого URI.
|
URI |
parseServerAuthority()
Попытки проанализировать компонент полномочий этого URI, если определено, в пользовательскую информацию, узел, и компоненты порта.
|
URI |
relativize(URI uri)
Relativizes данный URI против этого URI.
|
URI |
resolve(String str)
Создает новый URI, анализируя данную строку и затем разрешая это против этого URI.
|
URI |
resolve(URI uri)
Разрешает данный URI против этого URI.
|
Строка |
toASCIIString()
Возвращает контент этого URI как строка US-ASCII.
|
Строка |
toString()
Возвращает контент этого URI как строка.
|
URL |
toURL()
Создает URL из этого URI.
|
public URI(String str) throws URISyntaxException
Этот конструктор анализирует данную строку точно как определено грамматикой в
Пустой компонент полномочий разрешается, пока он сопровождается непустым путем, компонентом запроса, или компонентом фрагмента. Это позволяет парсинг URI, таких как "file:///foo/bar", который, кажется, намерение RFC 2396, хотя грамматика не разрешает это. Если компонент полномочий пуст тогда пользовательская информация, узел, и компоненты порта неопределены.
Пустые относительные пути разрешаются; это, кажется, намерение RFC 2396, хотя грамматика не разрешает это. Основное последствие этого отклонения - то, что автономный фрагмент, такой как синтаксические анализы "#foo" как относительный URI с пустым путем и данным фрагментом, и может быть полезно разрешен против основного URI.
Адреса IPv4 в компонентах узла анализируются строго, как определено
Именам узлов в компонентах узла, которые включают только единственную метку домена, разрешают запуститься с alphanum символа. Это, кажется, намерение раздела
Адреса IPv6 разрешаются для компонента узла. Адрес IPv6 должен быть включен в квадратные скобки ('[' и ']') как определено
Символы в другой категории разрешаются везде, где RFC 2396 разрешает оставленные октеты, то есть, в пользовательской информации, пути, запросе, и компонентах фрагмента, так же как в компоненте полномочий, если полномочия основаны на реестре. Это позволяет URI содержать символы Unicode вне тех в наборе символов US-ASCII.
str
- Строка, которая будет проанализирована в URINullPointerException
- Если str является nullURISyntaxException
- Если данная строка нарушает RFC 2396, как увеличено вышеупомянутыми отклонениямиpublic URI(String scheme, String userInfo, String host, int port, String path, String query, String fragment) throws URISyntaxException
Если схема дается тогда путь, если также дано, должно или быть пустым или начаться с символа наклонной черты ('/'). Иначе компонент нового URI можно оставить неопределенным, передавая null для соответствующего параметра или, в случае параметра port, передавая -1.
Этот конструктор сначала создает строку URI из данных компонентов согласно правилам, определенным в
Первоначально, строка результата пуста.
Если схема дается тогда, она добавляется к результату, сопровождаемому символом двоеточия (':').
Если информация о пользователе, узел, или порт даются тогда строку, "//" добавляется.
Если информация о пользователе дается тогда, она добавляется, сопровождается рекламой - в символе ('@'). Любой символ не в незарезервированном, punct, вышел, или другие категории заключаются в кавычки.
Если узел дается тогда, он добавляется. Если узел является литеральным адресом IPv6, но не включается в квадратные скобки ('[' и ']') тогда, квадратные скобки добавляются.
Если номер порта дается тогда, символ двоеточия (':') добавляется, сопровождается номером порта в десятичном числе.
Если путь дается тогда, он добавляется. Любой символ не в незарезервированном, punct, вышел, или другие категории, и не равный символу наклонной черты ('/') или реклама - в символе ('@'), заключаются в кавычки.
Если запрос дается тогда, символ вопросительного знака ('?') добавляется, сопровождается запросом. Любой символ, который не является юридическим символом URI, заключается в кавычки.
Наконец, если фрагмент дается тогда, символ хеша ('#') добавляется, сопровождается фрагментом. Любой символ, который не является юридическим символом URI, заключается в кавычки.
Получающаяся строка URI тогда анализируется как будто, вызывая URI(String)
конструктор и затем вызов parseServerAuthority()
метод на результат; это может вызвать a URISyntaxException
быть брошенным.
scheme
- Имя схемыuserInfo
- Имя пользователя и информация об авторизацииhost
- Имя хостаport
- Номер портаpath
- Путьquery
- Запросfragment
- ФрагментURISyntaxException
- Если и схема и путь даются, но путь относителен, если строка URI, созданная из данных компонентов, нарушает RFC 2396, или если компонент полномочий строки присутствует, но не может быть проанализирован как основанные на сервере полномочияpublic URI(String scheme, String authority, String path, String query, String fragment) throws URISyntaxException
Если схема дается тогда путь, если также дано, должно или быть пустым или начаться с символа наклонной черты ('/'). Иначе компонент нового URI можно оставить неопределенным, передавая null для соответствующего параметра.
Этот конструктор сначала создает строку URI из данных компонентов согласно правилам, определенным в
Первоначально, строка результата пуста.
Если схема дается тогда, она добавляется к результату, сопровождаемому символом двоеточия (':').
Если полномочия даются тогда строку, "//" добавляется, сопровождается полномочиями. Если полномочия содержат литеральный адрес IPv6 тогда, адрес должен быть включен в квадратные скобки ('[' и ']'). Любой символ не в незарезервированном, punct, вышел, или другие категории, и не равный рекламе - в символе ('@'), заключаются в кавычки.
Если путь дается тогда, он добавляется. Любой символ не в незарезервированном, punct, вышел, или другие категории, и не равный символу наклонной черты ('/') или реклама - в символе ('@'), заключаются в кавычки.
Если запрос дается тогда, символ вопросительного знака ('?') добавляется, сопровождается запросом. Любой символ, который не является юридическим символом URI, заключается в кавычки.
Наконец, если фрагмент дается тогда, символ хеша ('#') добавляется, сопровождается фрагментом. Любой символ, который не является юридическим символом URI, заключается в кавычки.
Получающаяся строка URI тогда анализируется как будто, вызывая URI(String)
конструктор и затем вызов parseServerAuthority()
метод на результат; это может вызвать a URISyntaxException
быть брошенным.
scheme
- Имя схемыauthority
- Властиpath
- Путьquery
- Запросfragment
- ФрагментURISyntaxException
- Если и схема и путь даются, но путь относителен, если строка URI, созданная из данных компонентов, нарушает RFC 2396, или если компонент полномочий строки присутствует, но не может быть проанализирован как основанные на сервере полномочияpublic URI(String scheme, String host, String path, String fragment) throws URISyntaxException
Компонент можно оставить неопределенным, передавая null.
Этот конструктор удобства работает как будто, вызывая конструктора с семью параметрами следующим образом:
new URI
(scheme, null, host, -1, path, null, fragment);
scheme
- Имя схемыhost
- Имя хостаpath
- Путьfragment
- ФрагментURISyntaxException
- Если строка URI, созданная из данных компонентов, нарушает RFC 2396public URI(String scheme, String ssp, String fragment) throws URISyntaxException
Компонент можно оставить неопределенным, передавая null.
Этот конструктор сначала создает URI в строковой форме, используя данные компоненты следующим образом:
Первоначально, строка результата пуста.
Если схема дается тогда, она добавляется к результату, сопровождаемому символом двоеточия (':').
Если специфичная для схемы часть дается тогда, она добавляется. Любой символ, который не является юридическим символом URI, заключается в кавычки.
Наконец, если фрагмент дается тогда, символ хеша ('#') добавляется к строке, сопровождаемой фрагментом. Любой символ, который не является юридическим символом URI, заключается в кавычки.
Получающаяся строка URI тогда анализируется, чтобы создать новый экземпляр URI как будто, вызывая URI(String)
конструктор; это может вызвать a URISyntaxException
быть брошенным.
scheme
- Имя схемыssp
- Специфичная для схемы частьfragment
- ФрагментURISyntaxException
- Если строка URI, созданная из данных компонентов, нарушает RFC 2396public static URI create(String str)
Этот метод фабрики удобства работает как будто, вызывая URI(String)
конструктор; любой URISyntaxException
брошенный конструктором пойман и обернут в новое IllegalArgumentException
объект, который тогда бросается.
Этот метод обеспечивается для использования в ситуациях, где известно, что данная строка является юридическим URI, например для констант URI, объявленных в пределах в программе, и таким образом, это считали бы ошибкой программирования для строки, чтобы не проанализировать как таковой. Конструкторы, которые бросают URISyntaxException
непосредственно, должны быть используемые ситуации, где URI создается из ввода данных пользователем или из некоторого другого источника, который может быть склонным к ошибкам.
str
- Строка, которая будет проанализирована в URINullPointerException
- Если str является nullIllegalArgumentException
- Если данная строка нарушает RFC 2396public URI parseServerAuthority() throws URISyntaxException
Если бы компонент полномочий этого URI был уже распознан как являющийся основанным на сервере тогда, то он будет уже проанализирован в пользовательскую информацию, узел, и компоненты порта. В этом случае, или если у этого URI нет никакого компонента полномочий, этот метод просто возвращает этот URI.
Иначе этот метод пытается еще раз проанализировать компонент полномочий в пользовательскую информацию, узел, и компоненты порта, и выдает исключение, описывающее, почему компонент полномочий не мог быть проанализирован таким образом.
Этот метод обеспечивается, потому что универсальный синтаксис URI, определенный в
Во многих общих ситуациях, например когда рабочие URI, которые, как известно, являются или УРНАМИ или URL, иерархические используемые URI, всегда будут основаны на сервере. Они поэтому должны или быть проанализированы как таковые или обработанные как ошибка. В этих случаях оператор такой как
URI u = new URI(str).parseServerAuthority();
может использоваться, чтобы гарантировать, что u всегда обращается к URI, у которого, если у него есть компонент полномочий, есть основанные на сервере полномочия с надлежащей пользовательской информацией, узлом, и компонентами порта. Вызов этого метода также гарантирует, что, если полномочия не могли бы быть проанализированы таким образом тогда, соответствующее диагностическое сообщение может быть выпущено основанное на исключении, которое выдается.
URISyntaxException
- Если компонент полномочий этого URI определяется, но не может быть проанализирован как основанные на сервере полномочия согласно RFC 2396public URI normalize()
Если этот URI непрозрачен, или если его путь уже находится в нормальной форме, то этот URI возвращается. Иначе новый URI создается, который идентичен этому URI за исключением того, что его путь вычисляется, нормализуя путь этого URI способом, непротиворечивым с
Все сегменты "." удаляются.
Если сегменту ".." предшествует non-".." сегмент тогда, оба из этих сегментов удаляются. Этот шаг повторяется, пока это больше не применимо.
Если путь относителен, и если его первый сегмент содержит символ двоеточия (':'), то сегмент "." предварительно ожидается. Это предотвращает относительный URI с путем, таким как "a:b/c/d" от того, чтобы позже быть повторно проанализированным как непрозрачный URI со схемой "a" и специфичной для схемы частью "b/c/d". (Отклонение от RFC 2396)
Нормализованный путь начнется с одного или более сегментов "..", если были недостаточные non-".." сегменты, предшествующие им, чтобы позволить их удаление. Нормализованный путь начнется с сегмента ".", если Вы были введены шагом 3 выше. Иначе, нормализованный путь не будет содержать сегментов "." ИЛИ "..".
public URI resolve(URI uri)
Если данный URI является уже абсолютным, или если этот URI непрозрачен, то данный URI возвращается.
Если компонент фрагмента данного URI определяется, его компонент пути пуст, и его схема, полномочия, и компоненты запроса неопределены, то URI с данным фрагментом, но со всеми другими компонентами, равными таковым из этого URI, возвращается. Это позволяет URI, представляющий автономную ссылку фрагмента, такую как "#foo", чтобы быть полезно разрешенным против основного URI.
Иначе этот метод создает новый иерархический URI способом, непротиворечивым с
Новый URI создается со схемой этого URI и запросом данного URI и компонентами фрагмента.
Если у данного URI есть компонент полномочий тогда, полномочия нового URI и путь берутся от данного URI.
Иначе компонент полномочий нового URI копируется с этого URI, и его путь вычисляется следующим образом:
Если путь данного URI является абсолютным тогда, путь нового URI берется от данного URI.
Иначе путь данного URI относителен, и таким образом, путь нового URI вычисляется, разрешая путь данного URI против пути этого URI. Это делается, связывая всех кроме последнего сегмента пути этого URI, если таковые вообще имеются, с путем данного URI и затем нормализуя результат как будто, вызывая normalize
метод.
Результат этого метода является абсолютным, если, и только если, или этот URI является абсолютным или данный URI является абсолютным.
uri
- URI, который будет разрешен против этого URINullPointerException
- Если uri является nullpublic URI resolve(String str)
Этот метод удобства работает, как будто вызов его был эквивалентен оценке выражения resolve
(URI.create
(str)).
str
- Строка, которая будет проанализирована в URINullPointerException
- Если str является nullIllegalArgumentException
- Если данная строка нарушает RFC 2396public URI relativize(URI uri)
Преобразование абсолютных адресов в относительные данного URI против этого URI вычисляется следующим образом:
Если или этот URI или данный URI непрозрачны, или если схема и компоненты полномочий этих двух URI не идентичны, или если путь этого URI не является префиксом пути данного URI, то данный URI возвращается.
Иначе новый относительный иерархический URI создается с запросом и компонентами фрагмента, взятыми от данного URI и с компонентом пути, вычисленным, удаляя путь этого URI с начала пути данного URI.
uri
- URI, чтобы быть relativized против этого URINullPointerException
- Если uri является nullpublic URL toURL() throws MalformedURLException
Этот метод удобства работает, как будто вызов его был эквивалентен оценке выражения new URL(this.toString()) после первой проверки, что этот URI является абсолютным.
IllegalArgumentException
- Если этот URL не является абсолютнымMalformedURLException
- Если обработчик протокола для URL не мог бы быть найден, или если некоторая другая ошибка произошла, создавая URLpublic String getScheme()
Компонент схемы URI, если определено, только содержит символы в alphanum категории и в строке "-.+". Схема всегда запускается с альфа-символа.
Компонент схемы URI не может содержать оставленные октеты, следовательно этот метод не выполняет декодирования.
public boolean isAbsolute()
URI является абсолютным, если, и только если, у него есть компонент схемы.
public boolean isOpaque()
URI непрозрачен, если, и только если, это абсолютно и его специфичная для схемы часть не начинается с символа наклонной черты (' / '). У непрозрачного URI есть схема, специфичная для схемы часть, и возможно фрагмент; все другие компоненты неопределены.
public String getRawSchemeSpecificPart()
Специфичная для схемы часть URI только содержит юридические символы URI.
public String getSchemeSpecificPart()
Строка, возвращенная этим методом, равна возвращенному getRawSchemeSpecificPart
метод за исключением того, что все последовательности оставленных октетов декодируются.
public String getRawAuthority()
Компонент полномочий URI, если определено, только содержит рекламу - в символе ('@'), и символы в незарезервированном, punct, вышли, и другие категории. Если полномочия основаны на сервере тогда, они далее ограничиваются иметь допустимую пользовательскую информацию, узел, и компоненты порта.
public String getAuthority()
Строка, возвращенная этим методом, равна возвращенному getRawAuthority
метод за исключением того, что все последовательности оставленных октетов декодируются.
public String getRawUserInfo()
Компонент пользовательской информации URI, если определено, только содержит символы в незарезервированном, punct, оставленный, и другие категории.
public String getUserInfo()
Строка, возвращенная этим методом, равна возвращенному getRawUserInfo
метод за исключением того, что все последовательности оставленных октетов декодируются.
public String getHost()
У компонента узла URI, если определено, будет одна из следующих форм:
Доменное имя, состоящее из одной или более меток, разделенных символами точки ('.'), дополнительно сопровождаемый символом точки. Каждая метка состоит из alphanum символов так же как символов дефиса ('-'), хотя дефисы никогда не происходят как первые или последние знаки в метке. Самая правая метка доменного имени, состоящего из двух или больше меток, начинается с альфа-символа.
У адреса IPv4 точечной четверки формы digit+.digit+.digit+.digit+, где никакая последовательность цифры не более длинна чем три символа и никакая последовательность, есть значение, больше чем 255.
Адрес IPv6, включенный в квадратные скобки ('[' и ']') и состоящий из шестнадцатеричных цифр, символы двоеточия (':'), и возможно встроенный адрес IPv4. Полный синтаксис адресов IPv6 определяется в
public int getPort()
Компонент порта URI, если определено, является неотрицательным целым числом.
public String getRawPath()
Компонент пути URI, если определено, только содержит символ наклонной черты ('/'), реклама - в символе ('@'), и символы в незарезервированном, punct, вышли, и другие категории.
public String getPath()
Строка, возвращенная этим методом, равна возвращенному getRawPath
метод за исключением того, что все последовательности оставленных октетов декодируются.
public String getRawQuery()
Компонент запроса URI, если определено, только содержит юридические символы URI.
public String getQuery()
Строка, возвращенная этим методом, равна возвращенному getRawQuery
метод за исключением того, что все последовательности оставленных октетов декодируются.
public String getRawFragment()
Компонент фрагмента URI, если определено, только содержит юридические символы URI.
public String getFragment()
Строка, возвращенная этим методом, равна возвращенному getRawFragment
метод за исключением того, что все последовательности оставленных октетов декодируются.
public boolean equals(Object ob)
Если данный объект не является URI тогда, этот метод сразу возвращает false.
Для двух URI, которые рассмотрят равный, требует, чтобы или оба были непрозрачны, или оба являются иерархическими. Их схемы должны или оба быть неопределены или иначе быть равны без отношения, чтобы случиться. Их фрагменты должны или оба быть неопределены или иначе быть равны.
Для двух непрозрачных URI, которые рассмотрят равный, их специфичные для схемы части должны быть равными.
Для двух иерархических URI, которые рассмотрят равный, их пути должны быть равными, и их запросы должны или оба быть неопределены или иначе быть равны. Их полномочия должны или оба быть неопределены, или оба быть основанными на реестре, или оба быть основанными на сервере. Если их полномочия определяются и основаны на реестре, то они должны быть равными. Если их полномочия определяются и основаны на сервере, то их узлы должны быть равными без отношения, чтобы случиться, их номера портов должны быть равными, и их компоненты пользовательской информации должны быть равными.
Тестируя пользовательскую информацию, путь, запрос, фрагмент, полномочия, или специфичные для схемы части двух URI для равенства, необработанных форм, а не закодированных форм этих компонентов сравниваются, и шестнадцатеричные цифры оставленных октетов сравниваются без отношения, чтобы случиться.
Этот метод удовлетворяет общий контракт Object.equals
метод.
equals
в class Object
ob
- Объект, с которым состоит в том, чтобы быть сравнен этот объектObject.hashCode()
, HashMap
public int hashCode()
Object.hashCode
метод.hashCode
в class Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public int compareTo(URI that)
Когда сравнение соответствующих компонентов двух URI, если один компонент неопределен, но другой, определяется тогда, первыми, как полагают, являются меньше чем второе. Если не указано иное, строковые компоненты упорядочиваются согласно их естественному, чувствительному к регистру упорядочиванию как определено String.compareTo
метод. Строковые компоненты, которые подвергаются кодированию, сравниваются, сравнивая их необработанные формы, а не их закодированные формы.
Упорядочивание URI определяется следующим образом:
Два URI с различными схемами упорядочиваются согласно упорядочиванию их схем без отношения случиться.
Иерархический URI, как полагают, является меньше чем непрозрачный URI с идентичной схемой.
Два непрозрачных URI с идентичными схемами упорядочиваются согласно упорядочиванию их специфичных для схемы частей.
Два непрозрачных URI с идентичными схемами и специфичными для схемы частями упорядочиваются согласно упорядочиванию их фрагментов.
Два иерархических URI с идентичными схемами упорядочиваются согласно упорядочиванию их компонентов полномочий:
Если оба компонента полномочий основаны на сервере тогда, URI упорядочиваются согласно их компонентам пользовательской информации; если эти компоненты идентичны тогда, URI упорядочиваются согласно упорядочиванию их узлов без отношения случиться; если узлы идентичны тогда, URI упорядочиваются согласно упорядочиванию их портов.
Если один или оба компонента полномочий основаны на реестре тогда, URI упорядочиваются согласно упорядочиванию их компонентов полномочий.
Наконец, два иерархических URI с идентичными схемами и компонентами полномочий упорядочиваются согласно упорядочиванию их путей; если их пути идентичны тогда, им упорядочивают согласно упорядочиванию их запросов; если запросы идентичны тогда, им упорядочивают согласно порядку их фрагментов.
Этот метод удовлетворяет общий контракт Comparable.compareTo
метод.
compareTo
в интерфейсе Comparable<URI>
that
- Объект, с которым должен быть сравнен этот URIClassCastException
- Если данный объект не является URIpublic String toString()
Если этот URI создавался, вызывая одного из конструкторов в этом class тогда возвращается, строка, эквивалентная исходной строке ввода, или строке, вычисленной от первоначально данных компонентов, как соответствующий. Иначе этот URI создавался нормализацией, разрешением, или преобразованием абсолютных адресов в относительные, и таким образом, строка создается из компонентов этого URI согласно правилам, определенным в
public String toASCIIString()
Если этот URI не будет содержать символов в другой категории тогда, то вызов этого метода возвратит то же самое значение как вызов toString
метод. Иначе этот метод работает как будто, вызывая тот метод и затем кодируя результат.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92