URI Clase

Definición

Representa una referencia de identificador uniforme de recursos (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
Herencia
Atributos
Implementaciones

Comentarios

Representa una referencia de identificador uniforme de recursos (URI).

Aparte de algunas desviaciones menores indicadas a continuación, una instancia de esta clase representa una referencia de URI tal y como se define en RFC  2396: Identificadores uniformes de recursos (URI): sintaxishttp://www.ietf.org/rfc/rfc2396.txt genérica, modificada por RFC  2732: Formato para direcciones IPv6 literales en direcciones URLhttp://www.ietf.org/rfc/rfc2732.txt. El formato de dirección IPv6 literal también admite scope_ids. Aquí se describe la sintaxis y el uso de scope_ids. Esta clase proporciona constructores para crear instancias de URI a partir de sus componentes o mediante el análisis de sus formularios de cadena, métodos para acceder a los distintos componentes de una instancia y métodos para normalizar, resolver y relativizar instancias de URI. Las instancias de esta clase son inmutables.

<Sintaxis y componentes <de h3> URI /h3>

En el nivel más alto, una referencia de URI (en adelante, simplemente "URI") en forma de cadena tiene la sintaxis

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

donde los corchetes [...] delimitan componentes opcionales y los caracteres <b<>:/b> y <b#></b> se extienden por sí mismos.

Un URI absoluto especifica un esquema; se dice que un URI que no es absoluto es relativo. Los URI también se clasifican según si son opacos o jerárquicos.

Un URI opaco es un URI absoluto cuya parte específica del esquema no comienza con un carácter de barra diagonal ('/'). Los URI opacos no están sujetos a análisis adicionales. Algunos ejemplos de URI opacos son:

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

Un URI jerárquico es un URI absoluto cuyo elemento específico del esquema comienza con un carácter de barra diagonal o un URI relativo, es decir, un URI que no especifica un esquema. Algunos ejemplos de URI jerárquicos son:

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

Un URI jerárquico está sujeto a un análisis adicional según la sintaxis.

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

donde los caracteres <b>:</b>, <b><//b>, <b<?>/b> y <b>#</b> son propios. La parte específica del esquema de un URI jerárquico consta de los caracteres entre el esquema y los componentes de fragmento.

El componente de autoridad de un URI jerárquico es, si se especifica, basado en servidor o basado en registro. Una autoridad basada en servidor analiza según la sintaxis conocida.

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

donde los caracteres <b<>@/b> y <b:></b> se presentan por sí mismos. Casi todos los esquemas de URI actualmente en uso se basan en el servidor. Se considera que un componente de autoridad que no analiza de esta manera se basa en el registro.

El componente de ruta de acceso de un URI jerárquico se dice que es absoluto si comienza con un carácter de barra diagonal ('/'); de lo contrario, es relativo. La ruta de acceso de un URI jerárquico que es absoluto o especifica que una autoridad siempre es absoluta.

Todo lo dicho, a continuación, una instancia de URI tiene los nueve componentes siguientes:

<blockquote><table summary="Describe los componentes de un URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment"><tr><th>Component</thType</th><><>/tr tr><<>td>scheme</td></td><String/td></tr tr<>td-specific-part>><    </td td>String><</td></tr tr><><td>authority</td td>><String</td></tr><>tr<>td user-info</td><td><String/td></tr>>><<td host</tdString<><> td/td/td></tr tr>>><<td port</td td>int><</td></tr><tr><td>path</td td><><>String</tr><tr><td>query</td td></td><String></tr tr td>><><fragment</td td><String></td></tr></table></blockquote>

En una instancia determinada, cualquier componente determinado no está definido o definido con un valor distinto. Los componentes de cadena no definidos se representan mediante null, mientras que los componentes enteros no definidos se representan mediante -1. Se puede definir un componente de cadena para que la cadena vacía sea su valor; esto no equivale a que ese componente no esté definido.

Si un componente determinado es o no está definido en una instancia depende del tipo del URI que se representa. Un URI absoluto tiene un componente de esquema. Un URI opaco tiene un esquema, una parte específica del esquema y posiblemente un fragmento, pero no tiene otros componentes. Un URI jerárquico siempre tiene una ruta de acceso (aunque puede estar vacía) y una parte específica del esquema (que al menos contiene la ruta de acceso) y puede tener cualquiera de los otros componentes. Si el componente de autoridad está presente y se basa en el servidor, se definirá el componente host y se definirán los componentes de información del usuario y puerto.

<h4> Operaciones en instancias <de URI /h4>

Las operaciones clave admitidas por esta clase son las de normalización, resolución y relativización.

La normalización es el proceso de quitar segmentos innecesarios "." y ".." del componente de ruta de acceso de un URI jerárquico. Cada "." segmento se quita simplemente. Un ".." segmento solo se quita si va precedido por un segmento distinto".." de . La normalización no tiene ningún efecto sobre los URI opacos.

La resolución es el proceso de resolución de un URI en otro URI base . El URI resultante se construye a partir de componentes de ambos URI de la manera especificada por RFC  2396, tomando componentes del URI base para los que no se especifican en el original. En el caso de los URI jerárquicos, la ruta de acceso del original se resuelve en la ruta de acceso de la base y, a continuación, se normaliza. El resultado, por ejemplo, de resolver

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

en el URI http://java.sun.com/j2se/1.3/ base es el URI de resultado.

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

Resolución del URI relativo

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

frente a este resultado produce, a su vez,

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

Se admite la resolución de URI absolutos y relativos, y de rutas de acceso absolutas y relativas en el caso de URI jerárquicos. Resolver el URI file:///~calendar frente a cualquier otro URI simplemente produce el URI original, ya que es absoluto. La resolución del URI relativo (2) anterior con respecto al URI base relativo (1) produce el URI normalizado, pero aún relativo, URI

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

La relativización, por último, es la inversa de la resolución: para dos URI normalizados uv,

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

Esta operación suele ser útil al construir un documento que contenga URI que se deben realizar en relación con el URI base del documento siempre que sea posible. Por ejemplo, relativizar el URI

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

en el URI base

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

produce el URI docs/guide/index.htmlrelativo .

<h4> Categorías <de caracteres /h4>

RFC  2396 especifica exactamente qué caracteres se permiten en los distintos componentes de una referencia de URI. A continuación se usan las siguientes categorías, la mayoría de las cuales se toman de esa especificación, para describir estas restricciones:

<blockquote><table cellspacing=2 summary="Describe categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other"><tr><th valign=top>alpha</th><td>The US-ASCII alphabetic characters, 'A'  a través de 'Z' y 'a'  a través de 'z'</td></tr tr><><th valign=top> digit/th<>td>The US-ASCII decimaldigit< characters, '0'  a través de '9'</td></tr tr><><th valign=top>alphanum</th<>td>All alpha and digit characters</td></tr><<>th valign=top> unreserved    </th><td>Todos los caracteres alfanuméricos junto con los de la cadena "_-!.~'()*"</td></tr><><th valign=top> punct</th><td>Los caracteres de la cadena ",;:$&+="</td></tr tr tr><><th valign=top> reserved</th><td>Todos los caracteres punct junto con los de la cadena "?/[]@"</td></tr tr<>><th valign=top>octetos escaped</th><td>Escaped, es decir, triplets que constan del carácter de porcentaje ('%') seguidos de dos dígitos hexadecimales (,-'A''F' y 'a'-'f')</td></tr>><<th valign=top> other</th<>td>Los caracteres Unicode que no están en el juego de caracteres US-ASCII, no son caracteres de control (-'0''9'según el java.lang.Character#isISOControl(char) Character.isISOControl method) y no son caracteres de espacio (según el java.lang.Character#isSpaceChar(char) Character.isSpaceChar método)  (<b>Desviación de RFC 2396</b>, que se limita a US-ASCII)</td></tr></table></blockquote>

"legal-chars"> El conjunto de todos los caracteres de URI legal consta de los caracteres no reservados, reservados, con escape y otros caracteres.

<h4> Octetos con escape, comillas, codificación y descodificación </h4>

RFC 2396 permite que los octetos de escape aparezcan en los componentes user-info, path, query y fragment. El escape sirve para dos propósitos en los URI:

<ul>

<Li>

Para codificar caracteres no US-ASCII cuando se requiere un URI para ajustarse estrictamente a RFC  2396 no contiene ningún otro carácter.

</Li>

<Li>

Para comillas de caracteres que no son válidos en un componente. Los componentes user-info, path, query y fragment difieren ligeramente en términos de los caracteres que se consideran legales e ilegales.

</Li>

</ul>

Estos propósitos se sirven en esta clase mediante tres operaciones relacionadas:

<ul>

<Li>

"codificar"> Un carácter se codifica reemplazando por la secuencia de octetos de escape que representan ese carácter en el juego de caracteres UTF-8. El símbolo de moneda euro ('\u005Cu20AC'), por ejemplo, se codifica como "%E2%82%AC". (<b>Desviación de RFC  2396</b>, que no especifica ningún juego de caracteres determinado).

</Li>

<Li>

"quote"> Un carácter no válido se cita simplemente codificando. El carácter de espacio, por ejemplo, se cita reemplazando por "%20". UTF-8 contiene US-ASCII, por lo tanto, para caracteres US-ASCII, esta transformación tiene exactamente el efecto requerido por RFC 2396.

</Li>

<Li>

"descodificar"> Una secuencia de octetos con escape se descodifica reemplazando por la secuencia de caracteres que representa en el juego de caracteres UTF-8. UTF-8 contiene US-ASCII, por lo que la descodificación tiene el efecto de descomillar cualquier carácter US-ASCII entre comillas, así como el de descodificar cualquier carácter no US-ASCII codificado. Si se produce un error de descodificación al descodificar los octetos con escape, los octetos erróneos se reemplazan por '\u005CuFFFD', el carácter de reemplazo Unicode.

</Li>

</ul>

Estas operaciones se exponen en los constructores y métodos de esta clase de la siguiente manera:

<ul>

<Li>

El constructor de un solo argumento #URI(java.lang.String) requiere que los caracteres no válidos de su argumento estén entrecomillados y conserve los octetos de escape y otros caracteres que están presentes.

</Li>

<Li>

Los constructores de varios argumentos #URI(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String) citan caracteres no válidos según sea necesario para los componentes en los que aparecen. El carácter de porcentaje ('%') siempre está entrecomillado por estos constructores. Se conservan los demás caracteres.

</Li>

<Li>

Los #getRawUserInfo() getRawUserInfométodos , #getRawPath() getRawPath, #getRawQuery() getRawQuery#getRawFragment() getRawFragment, #getRawAuthority() getRawAuthority, y #getRawSchemeSpecificPart() getRawSchemeSpecificPart devuelven los valores de sus componentes correspondientes en formato sin procesar, sin interpretar ningún octeto de escape. Las cadenas devueltas por estos métodos pueden contener octetos de escape y otros caracteres, y no contendrán caracteres no válidos.

</Li>

<Li>

Los #getUserInfo() getUserInfométodos , #getPath() getPath, #getQuery() getQuery#getFragment() getFragment, #getAuthority() getAuthority, y #getSchemeSpecificPart() getSchemeSpecificPart descodifican los octetos con escape en sus componentes correspondientes. Las cadenas devueltas por estos métodos pueden contener otros caracteres y caracteres no válidos, y no contendrán octetos con escape.

</Li>

<Li>

El #toString() toString método devuelve una cadena URI con todas las comillas necesarias, pero que pueden contener otros caracteres.

</Li>

<Li>

El #toASCIIString() toASCIIString método devuelve una cadena de URI totalmente entrecomillada y codificada que no contiene ningún otro carácter.

</Li>

</ul>

<h4> Identidades </h4>

Para cualquier URI u, siempre es el caso que

<blockquote>new URI(u.toString()).equals(u&) nbsp;. </Blockquote>

Para cualquier URI u que no contenga sintaxis redundante, como dos barras diagonales antes de una autoridad vacía (como en file:///tmp/ ) o un signo de dos puntos después de un nombre de host, pero sin puerto (como en http://java.sun.com: ), y que no codifica caracteres excepto los que deben citarse, las siguientes identidades también contienen:

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

en todos los casos,

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>)

si u es jerárquico y

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>)

si u es jerárquico y no tiene autoridad ni autoridad basada en servidor.

<h4> URI, direcciones URL y direcciones URL </h4>

Un URI es un identificador uniforme de recursos mientras que una dirección URL es un localizador uniforme de recursos. Por lo tanto, cada dirección URL es un URI, en términos abstractos, pero no cada URI es una dirección URL. Esto se debe a que hay otra subcategoría de URI, nombres uniformes de recursos (URN), qué recursos de nombre pero no especifica cómo localizarlos. Los mailtoURI , newsy isbn mostrados anteriormente son ejemplos de URN.

La distinción conceptual entre URI y direcciones URL se refleja en las diferencias entre esta clase y la URL clase .

Una instancia de esta clase representa una referencia de URI en el sentido sintáctico definido por RFC 2396. Un URI puede ser absoluto o relativo. Una cadena de URI se analiza según la sintaxis genérica sin tener en cuenta el esquema, si existe, que especifica. No se realiza ninguna búsqueda del host, si existe, y no se construye ningún controlador de flujo dependiente del esquema. La igualdad, el hash y la comparación se definen estrictamente en términos del contenido de caracteres de la instancia. En otras palabras, una instancia de URI es poco más que una cadena estructurada que admite las operaciones sintácticas e independientes del esquema de comparación, normalización, resolución y relativización.

Una instancia de la URL clase, por el contrario, representa los componentes sintácticos de una dirección URL junto con parte de la información necesaria para acceder al recurso que describe. Una dirección URL debe ser absoluta, es decir, siempre debe especificar un esquema. Una cadena de dirección URL se analiza según su esquema. Un controlador de secuencia siempre se establece para una dirección URL y, de hecho, es imposible crear una instancia de dirección URL para un esquema para el que no hay ningún controlador disponible. La igualdad y el hash dependen tanto del esquema como de la dirección de Internet del host, si existe; no se define la comparación. Es decir, una dirección URL es una cadena estructurada que admite el funcionamiento sintáctico de la resolución, así como las operaciones de E/S de red de buscar el host y abrir una conexión al recurso especificado.

Se agregó en la versión 1.4.

Documentación de Java para java.net.URI.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código Project y que se usan según los términos Creative Commons 2.5 Attribution License.

Constructores

URI(String)

Construye un URI mediante el análisis de la cadena especificada.

URI(String, String, String)

Construye un URI a partir de los componentes especificados.

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

Construye un URI jerárquico a partir de los componentes especificados.

URI(String, String, String, String)

Construye un URI jerárquico a partir de los componentes especificados.

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

Construye un URI jerárquico a partir de los componentes especificados.

Propiedades

Authority

Devuelve el componente de autoridad descodificado de este URI.

Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Fragment

Devuelve el componente de fragmento descodificado de este URI.

Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
Host

Devuelve el componente host de este URI.

IsAbsolute

Indica si este URI es absoluto o no.

IsOpaque

Indica si este URI es opaco o no.

JniIdentityHashCode

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
JniPeerMembers

Representa una referencia de identificador uniforme de recursos (URI).

Path

Devuelve el componente de ruta de acceso descodificado de este URI.

PeerReference

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
Port

Devuelve el número de puerto de este URI.

Query

Devuelve el componente de consulta descodificado de este URI.

RawAuthority

Devuelve el componente de autoridad sin procesar de este URI.

RawFragment

Devuelve el componente de fragmento sin procesar de este URI.

RawPath

Devuelve el componente de ruta de acceso sin procesar de este URI.

RawQuery

Devuelve el componente de consulta sin procesar de este URI.

RawSchemeSpecificPart

Devuelve la parte específica del esquema sin procesar de este URI.

RawUserInfo

Devuelve el componente de información de usuario sin procesar de este URI.

Scheme

Devuelve el componente de esquema de este URI.

SchemeSpecificPart

Devuelve la parte específica del esquema descodificado de este URI.

ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)
ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)
UserInfo

Devuelve el componente de información de usuario descodificado de este URI.

Métodos

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
CompareTo(URI)

Compara este URI con otro objeto, que debe ser un URI.

Create(String)

Crea un URI mediante el análisis de la cadena especificada.

Dispose()

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
Dispose(Boolean)

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
JavaFinalize()

Llamado por el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto.

(Heredado de Object)
Normalize()

Normaliza la ruta de acceso de este URI.

Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
ParseServerAuthority()

Intenta analizar el componente de autoridad de este URI, si se define, en componentes de información de usuario, host y puerto.

Relativize(URI)

Relativiza el URI especificado con respecto a este URI.

Resolve(String)

Construye un nuevo URI mediante el análisis de la cadena especificada y, a continuación, lo resuelve con este URI.

Resolve(URI)

Resuelve el URI especificado con este URI.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
ToArray<T>()

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
ToASCIIString()

Devuelve el contenido de este URI como una cadena US-ASCII.

ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
ToURL()

Construye una dirección URL a partir de este URI.

UnregisterFromRuntime()

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em> o <em>interrumpido</em>.<><

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

IComparable.CompareTo(Object)

Representa una referencia de identificador uniforme de recursos (URI).

IJavaPeerable.Disposed()

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
IJavaPeerable.Finalized()

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Representa una referencia de identificador uniforme de recursos (URI).

(Heredado de Object)

Métodos de extensión

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

Representa una referencia de identificador uniforme de recursos (URI).

GetJniTypeName(IJavaPeerable)

Representa una referencia de identificador uniforme de recursos (URI).

Se aplica a