URI Класс

Определение

Представляет ссылку на универсальный код ресурса (URI).

[Android.Runtime.Register("java/net/URI", DoNotGenerateAcw=true)]
public sealed class URI : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.IComparable
[<Android.Runtime.Register("java/net/URI", DoNotGenerateAcw=true)>]
type URI = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface IComparable
Наследование
Атрибуты
Реализации

Комментарии

Представляет ссылку на универсальный код ресурса (URI).

Помимо некоторых незначительных отклонений, указанных ниже, экземпляр этого класса представляет ссылку URI в соответствии с определением RFC  2396: универсальные идентификаторы ресурсов (URI): универсальный синтаксисhttp://www.ietf.org/rfc/rfc2396.txt, измененный RFC  2732: формат для литеральных IPv6-адресов в URL-адресахhttp://www.ietf.org/rfc/rfc2732.txt. Формат IPv6-адресов литерала также поддерживает scope_ids. Синтаксис и использование scope_ids описаны здесь. Этот класс предоставляет конструкторы для создания экземпляров URI из своих компонентов или путем анализа их строковых форм, методы для доступа к различным компонентам экземпляра и методы для нормализации, разрешения и относительности экземпляров URI. Экземпляры этого класса являются неизменяемыми.

<Синтаксис и компоненты <URI h3> /h3>

На самом высоком уровне ссылка на URI (далее просто "URI") в строковой форме имеет синтаксис

<blockquote> [scheme<b><:/b>]scheme-specific-part[<b>#</b>fragment] </blockquote>

где квадратные скобки [...] обозначают необязательные компоненты, а символы <b><:/b> и <b#></b> означают сами за себя.

Абсолютный URI указывает схему; URI, который не является абсолютным, считается относительным. URI также классифицируются в зависимости от того, являются ли они непрозрачными или иерархическими.

Непрозрачный URI — это абсолютный URI, часть которого для конкретной схемы не начинается с символа косой черты ('/'). Непрозрачные URI не подлежат дальнейшему анализу. Ниже приведены некоторые примеры непрозрачных URI:

<blockquote><table cellpadding=0 cellspacing=0 summary="layout"><tr><td><mailto:java-net@java.sun.comtd></tr><><td><news:comp.lang.javatd/tr tr><<>td></td<><urn:isbn:096139210x>/tr></table></blockquote>

Иерархический URI — это либо абсолютный URI, часть которого начинается с символа косой черты, либо относительный URI, то есть URI, не указывающий схему. Ниже приведены некоторые примеры иерархических URI.

<blockquote><http://java.sun.com/j2se/1.3/br>docs/guide/collections/designfaq.html#28<br><../../../demo/jfc/SwingSet2/src/SwingSet2.java<>file:///~/calendar/blockquote>

Иерархический URI подлежит дальнейшему анализу в соответствии с синтаксисом.

<blockquote> [scheme<b>:</b>][<b>//</b>authority][path][<b><?/b>query][<b>#</b>fragment] </blockquote>

где символы <b><:/b>, <b</>/b>, <b>?</b> и <b#></b> сами за себя. Часть иерархического универсального кода ресурса (URI) для конкретной схемы состоит из символов между компонентами схемы и фрагмента.

Компонент центра иерархического URI, если он указан, является сервером или реестром. Серверный центр анализирует в соответствии со знакомым синтаксисом.

<blockquote> [user-info<b><@/b>]host[<b>:</b>port] </blockquote>

где символы <b<>@/b> и <b:></b> сами за себя. Почти все используемые в настоящее время схемы URI основаны на сервере. Компонент центра, который не анализируется таким образом, считается основанным на реестре.

Компонент пути иерархического URI называется абсолютным, если он начинается с символа косой черты ('/'); в противном случае он является относительным. Путь к иерархическим URI, который является абсолютным или указывает на центр, всегда является абсолютным.

В этом случае экземпляр URI содержит следующие девять компонентов:

<blockquote><table summary="Describes components of a URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment"<>trth><>Component</th th><>Type</th></tr><td>><scheme</td/td<><>String></tr tr<><>td-specific-part>    </td><td>String</td></tr><td>><authority</td/td><String<>></tr td/tr<>><td>user-info</td/><tdString<><>/tr td></tr<>td>host</td/td<><String><>/tr<>tr><td>port</td/td><><int></tr tr><td путь</tdString><></><tr><td/tr td>/trtr td>query</td><td>String</td></tr<>tr><td>fragment</td td><>String</td></tr></table></blockquote><><>

В данном экземпляре любой конкретный компонент либо не определен , либо определен с отдельным значением. Неопределенные строковые компоненты представлены с помощью null, а неопределенные целочисленные компоненты — .-1 Компонент строки может быть определен для того, чтобы в качестве значения была пустая строка; это не эквивалентно неопределенному компоненту.

Определяется ли конкретный компонент в экземпляре, зависит от типа представляемого URI. Абсолютный URI имеет компонент схемы. Непрозрачный URI содержит схему, часть схемы и, возможно, фрагмент, но не имеет других компонентов. Иерархический URI всегда имеет путь (хотя он может быть пустым) и часть схемы (которая по крайней мере содержит путь) и может содержать любой из других компонентов. Если компонент центра имеется и основан на сервере, то будет определен компонент узла и могут быть определены компоненты сведений о пользователе и портах.

<h4> Операции с экземплярами <URI /h4>

Основными операциями, поддерживаемыми этим классом, являются операции нормализации, разрешения и относительности.

Нормализация — это процесс удаления ненужных "." сегментов и ".." из компонента пути иерархического URI. Каждый "." сегмент просто удаляется. Сегмент ".." удаляется только в том случае, если ему предшествует сегмент, отличный от".." сегмента. Нормализация не влияет на непрозрачные URI.

Разрешение — это процесс разрешения одного URI по отношению к другому базовому URI. Результирующий URI создается из компонентов обоих URI способом, указанным в RFC  2396, принимая компоненты из базового URI для компонентов, не указанных в исходном коде. Для иерархических универсальных кодов ресурса (URI) путь к исходному коду разрешается по базовому пути, а затем нормализуется. Результат, например, разрешения

<blockquote>docs/guide/collections/designfaq.html#28                  ( 1) </blockquote>

для базового URI http://java.sun.com/j2se/1.3/ является результирующим URI

<blockquote>http://java.sun.com/j2se/1.3/docs/guide/collections/designfaq.html#28</blockquote>

Разрешение относительного URI

<blockquote>../../../demo/jfc/SwingSet2/src/SwingSet2.java    ( 2) </blockquote>

против этого результата дает, в свою очередь,

<blockquote>http://java.sun.com/j2se/1.3/demo/jfc/SwingSet2/src/SwingSet2.java</blockquote>

Поддерживается разрешение абсолютных и относительных URI, а также абсолютных и относительных путей в случае иерархических URI. Разрешение URI file:///~calendar с любым другим URI просто возвращает исходный URI, так как он является абсолютным. Разрешение относительного URI (2) выше относительного базового URI (1) дает нормализованный, но все еще относительный URI

<blockquote>demo/jfc/SwingSet2/src/SwingSet2.java</blockquote>

Релятивизация, наконец, является обратным разрешением: для любых двух нормализованных URI u и  v,

<blockquote>u.relativize(u.resolve(v)).equals(v)   and<br>u.resolve(u.relativize(v)).equals(v)  .<br></blockquote>

Эта операция часто полезна при создании документа, содержащего URI, которые должны быть сделаны относительно базового URI документа, где это возможно. Например, релятивизация URI

<blockquote>http://java.sun.com/j2se/1.3/docs/guide/index.html</blockquote>

для базового URI

<blockquote>http://java.sun.com/j2se/1.3</blockquote>

возвращает относительный универсальный код ресурса (URI).docs/guide/index.html

<h4> Категории символов </h4>

RFC  2396 указывает, какие символы разрешены в различных компонентах ссылки URI. Следующие категории, большинство из которых взяты из этой спецификации, используются ниже для описания этих ограничений:

<blockquote><table cellspacing=2 summary="Describes categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other"><tr><th valign=top>alpha</th><td>Алфавитные символы US-ASCII, 'A'  через 'Z' и 'a'  через 'z'</td></tr><th><valign=top>digit</th><td>Символы десятичных цифр US-ASCII, '0'  через '9'</td></tr><th><valign=top>alphanum</th><td>All alpha and digit characters</td></tr>><<th th valign=top> unrereserved    </th><td>Все символы alphanum вместе с символами в строке "_-!.~'()*"</td></tr><<>th valign=top> punct</th><td>Символы в строке<",;:$&+=" /td></tr tr<>th><valign=top> reserved</th<>td>Все знаки пунктуации вместе с символами в строке "?/[]@"</td></tr<>><th valign=top>escaped</th><td>Escaped octet, то есть триплеты, состоящие из символа процента ('%'), за которым следуют две шестнадцатеричные цифры ('9'-'0', ,-'A''F' и 'a''f'-)</td></tr><th><th valign=top> other</th<>td>Символы Юникода, которые не входят в набор символов US-ASCII, не являются управляющими символами (в соответствии с java.lang.Character#isISOControl(char) Character.isISOControl method), и не являются пробелами (в соответствии с методомjava.lang.Character#isSpaceChar(char) Character.isSpaceChar)  (<b>Отклонение от RFC 2396</b>, которое ограничено US-ASCII)</td></tr></table></blockquote>

"legal-chars"> Набор всех символов юридического URI состоит из незарезервированных, зарезервированных, экранированных и других символов.

<h4> Экранированные октеты, кавычки, кодировка и декодирование </h4>

RFC 2396 позволяет экранировать октеты в компонентах сведений о пользователе, пути, запросах и фрагментах. Экранирование служит двум целям в URI:

<ul>

<Литий>

Кодирование символов, отличных от US-ASCII, если URI требуется для строгого соответствия RFC  2396, не содержащий никаких других символов.

</Литий>

<Литий>

Для кавычек символов, которые в противном случае являются недопустимыми в компоненте. Компоненты сведений о пользователе, пути, запроса и фрагмента немного отличаются с точки зрения того, какие символы считаются допустимыми и незаконными.

</Литий>

</ul>

Эти цели обслуживаются в этом классе тремя связанными операциями:

<ul>

<Литий>

"encode"> Символ кодируется путем замены его последовательностью экранированных октетов, которые представляют этот символ в кодировке UTF-8. Например, символ валюты евро ('\u005Cu20AC') закодирован как "%E2%82%AC". (<b>Отклонение от RFC  2396</b>, в котором не указана конкретная кодировка.)

</Литий>

<Литий>

"quote"> Недопустимый символ приводится в кавычки просто путем его кодирования. Символ пробела, например, задается в кавычки, заменяя его "%20"на . UTF-8 содержит US-ASCII, поэтому для символов US-ASCII это преобразование имеет именно тот эффект, который требуется для RFC 2396.

</Литий>

<Литий>

"decode"> Последовательность экранированных октетов декодируется путем замены последовательностью символов, которые она представляет в кодировке UTF-8. UTF-8 содержит US-ASCII, поэтому декодирование приводит к отмене кавычек всех кавычек символов US-ASCII, а также декодирования любых закодированных символов, отличных от US-ASCII. Если при декодировании экранированных октетов возникает ошибка декодирования, ошибочные октеты заменяются символом '\u005CuFFFD'замены Юникода.

</Литий>

</ul>

Эти операции предоставляются в конструкторах и методах этого класса следующим образом:

<ul>

<Литий>

Конструктор #URI(java.lang.String) с одним аргументом требует, чтобы любые недопустимые символы в аргументе были заключены в кавычки, и сохраняет все экранированные октеты и другие имеющиеся символы.

</Литий>

<Литий>

Конструкторы #URI(java.lang.String,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String) цитируют недопустимые символы в соответствии с требованиями компонентов, в которых они отображаются. Символ процента ('%') всегда приводится в кавычки этими конструкторами. Все остальные символы сохраняются.

</Литий>

<Литий>

Методы #getRawUserInfo() getRawUserInfo, #getRawPath() getRawPath, #getRawQuery() getRawQuery, #getRawFragment() getRawFragment, #getRawAuthority() getRawAuthorityи #getRawSchemeSpecificPart() getRawSchemeSpecificPart возвращают значения соответствующих компонентов в необработанном виде, не интерпретируя экранированные октеты. Строки, возвращаемые этими методами, могут содержать как экранированные октеты, так и другие символы и не содержать недопустимых символов.

</Литий>

<Литий>

Методы #getUserInfo() getUserInfo, #getPath() getPath, #getQuery() getQuery, #getFragment() getFragment, #getAuthority() getAuthorityи #getSchemeSpecificPart() getSchemeSpecificPart декодируют все экранированные октеты в соответствующих компонентах. Строки, возвращаемые этими методами, могут содержать как другие символы, так и недопустимые символы и не будут содержать экранированные октеты.

</Литий>

<Литий>

Метод #toString() toString возвращает строку URI со всеми необходимыми кавычками, но которая может содержать другие символы.

</Литий>

<Литий>

Метод #toASCIIString() toASCIIString возвращает строку URI с полными кавычками и закодированную, которая не содержит других символов.

</Литий>

</ul>

<h4> Удостоверения </h4>

Для любого универсального кода ресурса (URI) всегда имеет значение .

<blockquote>new URI(u.toString()).equals(u) . </blockquote>

Для любого URI u , который не содержит избыточный синтаксис, например две косые черты перед пустым центром (как в file:///tmp/ ) или двоеточие после имени узла, но без порта (как в ), и не кодирует символы, кроме тех, которые должны быть заключены в http://java.sun.com: кавычки, также содержат следующие удостоверения:

new URI(<i>u</i>.getScheme(),
<i>u</i>.getSchemeSpecificPart(),
<i>u</i>.getFragment())
                .equals(<i>u</i>)

во всех случаях,

new URI(<i>u</i>.getScheme(),
<i>u</i>.getUserInfo(), <i>u</i>.getAuthority(),
<i>u</i>.getPath(), <i>u</i>.getQuery(),
<i>u</i>.getFragment())
                .equals(<i>u</i>)

Значение , если u является иерархическим, и

new URI(<i>u</i>.getScheme(),
<i>u</i>.getUserInfo(), <i>u</i>.getHost(), <i>u</i>.getPort(),
<i>u</i>.getPath(), <i>u</i>.getQuery(),
<i>u</i>.getFragment())
                .equals(<i>u</i>)

Значение , если u является иерархическим и не имеет полномочий или серверного центра.

<h4> URI, URL-адреса и URL-адреса </h4>

Универсальный код ресурса (URI) — это универсальный идентификатор ресурса, а URL-адрес — это универсальный указатель ресурсов. Таким образом, каждый URL-адрес является URI, абстрактно говоря, но не каждый URI является URL-адресом. Это связано с тем, что существует другая подкатегория URI, универсальные имена ресурсов (URN), которые называют ресурсы, но не указывают, как их найти. Приведенные mailtoвыше URI , newsи isbn являются примерами URI.

Концептуальное различие между URI и URL-адресами отражается в различиях между этим классом и классом URL .

Экземпляр этого класса представляет ссылку URI в синтаксическом смысле, определяемом RFC 2396. Универсальный код ресурса (URI) может быть абсолютным или относительным. Строка URI анализируется в соответствии с универсальным синтаксисом без учета указанной в ней схемы, если она имеется. Поиск узла (если таковой имеется) не выполняется, и обработчик потока, зависящий от схемы, не создается. Равенство, хэширование и сравнение определяются строго с точки зрения содержимого символов экземпляра. Иными словами, экземпляр URI — это не более чем структурированная строка, которая поддерживает синтаксические, не зависящие от схемы операции сравнения, нормализации, разрешения и относительности.

Экземпляр URL класса , напротив, представляет синтаксические компоненты URL-адреса вместе с некоторыми сведениями, необходимыми для доступа к ресурсу, который он описывает. URL-адрес должен быть абсолютным, то есть всегда должен указывать схему. Строка URL-адреса анализируется в соответствии со схемой. Обработчик потока всегда устанавливается для URL-адреса, и на самом деле невозможно создать экземпляр URL-адреса для схемы, для которой обработчик недоступен. Равенство и хэширование зависят как от схемы, так и от интернет-адреса узла, если таковой имеется; сравнение не определено. Другими словами, URL-адрес — это структурированная строка, которая поддерживает синтаксическую операцию разрешения, а также сетевые операции ввода-вывода для поиска узла и открытия подключения к указанному ресурсу.

Добавлено в версии 1.4.

Документация по Java для java.net.URI.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Конструкторы

URI(String)

Создает универсальный код ресурса (URI) путем синтаксического анализа заданной строки.

URI(String, String, String)

Создает универсальный код ресурса (URI) из заданных компонентов.

URI(String, String, String, Int32, String, String, String)

Создает иерархический универсальный код ресурса (URI) из заданных компонентов.

URI(String, String, String, String)

Создает иерархический универсальный код ресурса (URI) из заданных компонентов.

URI(String, String, String, String, String)

Создает иерархический универсальный код ресурса (URI) из заданных компонентов.

Свойства

Authority

Возвращает декодированные компоненты центра для этого универсального кода ресурса (URI).

Class

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
Fragment

Возвращает декодированные компоненты фрагмента этого URI.

Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
Host

Возвращает компонент узла этого универсального кода ресурса (URI).

IsAbsolute

Указывает, является ли этот URI абсолютным.

IsOpaque

Указывает, является ли этот URI непрозрачным.

JniIdentityHashCode

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
JniPeerMembers

Представляет ссылку на универсальный код ресурса (URI).

Path

Возвращает компонент декодированного пути этого универсального кода ресурса (URI).

PeerReference

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
Port

Возвращает номер порта этого универсального кода ресурса (URI).

Query

Возвращает декодированные компоненты запроса этого URI.

RawAuthority

Возвращает необработанный компонент центра для этого URI.

RawFragment

Возвращает необработанный компонент фрагмента этого URI.

RawPath

Возвращает компонент необработанного пути этого URI.

RawQuery

Возвращает необработанный компонент запроса этого URI.

RawSchemeSpecificPart

Возвращает необработанную часть этого универсального кода ресурса (URI) для конкретной схемы.

RawUserInfo

Возвращает необработанный компонент сведений о пользователе этого URI.

Scheme

Возвращает компонент схемы этого универсального кода ресурса (URI).

SchemeSpecificPart

Возвращает декодированную часть этого универсального кода ресурса (URI) для конкретной схемы.

ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

(Унаследовано от Object)
ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

(Унаследовано от Object)
UserInfo

Возвращает декодированные компоненты сведений о пользователе этого универсального кода ресурса (URI).

Методы

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
CompareTo(URI)

Сравнивает этот URI с другим объектом, который должен быть URI.

Create(String)

Создает универсальный код ресурса (URI) путем синтаксического анализа заданной строки.

Dispose()

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
Dispose(Boolean)

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
Equals(Object)

Указывает, равен ли какой-то другой объект этому объекту.

(Унаследовано от Object)
GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
JavaFinalize()

Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект .

(Унаследовано от Object)
Normalize()

Нормализует путь к этому URI.

Notify()

Пробуждение одного потока, ожидающего на мониторе этого объекта.

(Унаследовано от Object)
NotifyAll()

Активирует все потоки, ожидающие на мониторе этого объекта.

(Унаследовано от Object)
ParseServerAuthority()

Пытается проанализировать компонент центра URI, если он определен, в компоненты сведений о пользователе, узле и порте.

Relativize(URI)

Относительное соответствие заданного URI этому URI.

Resolve(String)

Создает новый URI путем синтаксического анализа заданной строки и последующего разрешения ее по этому URI.

Resolve(URI)

Разрешает указанный URI для этого URI.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
ToArray<T>()

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
ToASCIIString()

Возвращает содержимое этого URI в виде строки US-ASCII.

ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
ToURL()

Создает URL-адрес на основе этого универсального кода ресурса (URI).

UnregisterFromRuntime()

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
Wait()

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

(Унаследовано от Object)
Wait(Int64)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

IComparable.CompareTo(Object)

Представляет ссылку на универсальный код ресурса (URI).

IJavaPeerable.Disposed()

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
IJavaPeerable.Finalized()

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Представляет ссылку на универсальный код ресурса (URI).

(Унаследовано от Object)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверенное средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Представляет ссылку на универсальный код ресурса (URI).

GetJniTypeName(IJavaPeerable)

Представляет ссылку на универсальный код ресурса (URI).

Применяется к