Share via


URI Classe

Definizione

Rappresenta un riferimento URI (Uniform Resource Identifier).

[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
Ereditarietà
Attributi
Implementazioni

Commenti

Rappresenta un riferimento URI (Uniform Resource Identifier).

A parte alcune deviazioni minori indicate di seguito, un'istanza di questa classe rappresenta un riferimento URI come definito da RFC  2396: URI (Uniform Resource Identifiers): sintassihttp://www.ietf.org/rfc/rfc2396.txt generica modificata da RFC  2732: formato per gli indirizzi IPv6 letterali negli URLhttp://www.ietf.org/rfc/rfc2732.txt. Il formato di indirizzo IPv6 letterale supporta anche scope_ids. La sintassi e l'utilizzo di scope_ids sono descritti qui. Questa classe fornisce costruttori per la creazione di istanze URI dai relativi componenti o analizzando i moduli stringa, i metodi per accedere ai vari componenti di un'istanza e i metodi per la normalizzazione, la risoluzione e la relativizzazione delle istanze URI. Le istanze di questa classe non sono modificabili.

<sintassi URI h3> e componenti </h3>

Al livello più alto un riferimento URI (in seguito semplicemente "URI") in formato stringa ha la sintassi

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

dove parentesi quadre [...] delineano i componenti facoltativi e i caratteri <b:<>/b> e <b/b>#<> stand per se stessi.

Un URI assoluto specifica uno schema; un URI che non è assoluto viene detto relativo. Gli URI vengono classificati anche in base al fatto che siano opachi o gerarchici.

Un URI opaco è un URI assoluto la cui parte specifica dello schema non inizia con un carattere barra ('/'). Gli URI opachi non sono soggetti a ulteriori analisi. Ecco alcuni esempi di URI opachi:

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

Un URI gerarchico è un URI assoluto la cui parte specifica dello schema inizia con un carattere barra o un URI relativo, ovvero un URI che non specifica uno schema. Ecco alcuni esempi di URI gerarchici:

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

Un URI gerarchico è soggetto a un'ulteriore analisi in base alla sintassi

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

dove i caratteri <b>:</b>, <b/b>>/<, <b/b>?>< e <b/b>#<> sono autonomi. La parte specifica dello schema di un URI gerarchico è costituita dai caratteri tra lo schema e i componenti del frammento.

Il componente dell'autorità di un URI gerarchico è, se specificato, basato sul server o basato sul Registro di sistema. Un'autorità basata su server analizza in base alla sintassi familiare

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

dove i caratteri <b><@/b> e <b/b>>:< si trovano per se stessi. Quasi tutti gli schemi URI attualmente in uso sono basati su server. Un componente dell'autorità che non analizza in questo modo viene considerato basato sul Registro di sistema.

Il componente path di un URI gerarchico si dice assoluto se inizia con un carattere barra ('/'); in caso contrario, è relativo. Il percorso di un URI gerarchico assoluto o specifica che un'autorità è sempre assoluta.

All told, then, a URI instance has the following nine components:

<blockquote><table summary="Descrive i componenti di un URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment"><tr><th>Component</th th>Type</th><></tr tr>><<td>scheme</td td<String>></tr tr td/tr<>td><><> scheme-specific-part      </td td><>String</td></tr tr><<>td>authority</td td>><String</td></tr tr><><td>user-info</td><td><String/><tr tr><><td>host</td><tdString<>/td/tr tr<><>td>>< port</td><tdint></td></tr tr><tr><td>path</td><tdString></td></tr><tr><td>query</td td><String></td></tr tr><<>td>fragment</td td></td><<String>/tr></table></blockquote>

In una determinata istanza qualsiasi componente specifico non è definito o definito con un valore distinto. I componenti di stringa non definiti sono rappresentati da null, mentre i componenti integer non definiti sono rappresentati da -1. Un componente stringa può essere definito in modo da avere la stringa vuota come valore; questo non equivale a tale componente non definito.

Se un componente specifico è o non è definito in un'istanza di dipende dal tipo di URI rappresentato. Un URI assoluto ha un componente dello schema. Un URI opaco ha uno schema, una parte specifica dello schema e possibilmente un frammento, ma non ha altri componenti. Un URI gerarchico ha sempre un percorso (anche se può essere vuoto) e una parte specifica dello schema (che contiene almeno il percorso) e può avere uno qualsiasi degli altri componenti. Se il componente dell'autorità è presente ed è basato sul server, il componente host verrà definito e i componenti di porta e informazioni utente possono essere definiti.

<Operazioni h4> sulle istanze <URI /h4>

Le operazioni chiave supportate da questa classe sono quelle di normalizzazione, risoluzione e relativizzazione.

La normalizzazione è il processo di rimozione di segmenti e ".." non necessari "." dal componente del percorso di un URI gerarchico. Ogni "." segmento viene semplicemente rimosso. Un ".." segmento viene rimosso solo se è preceduto da un segmento non".." . La normalizzazione non ha alcun effetto sugli URI opachi.

La risoluzione è il processo di risoluzione di un URI rispetto a un altro URI di base . L'URI risultante viene costruito da componenti di entrambi gli URI nel modo specificato da RFC  2396, prendendo componenti dall'URI di base per quelli non specificati nell'originale. Per gli URI gerarchici, il percorso dell'originale viene risolto rispetto al percorso della base e quindi normalizzato. Risultato, ad esempio, della risoluzione

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

rispetto all'URI http://java.sun.com/j2se/1.3/ di base è l'URI del risultato

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

Risoluzione dell'URI relativo

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

contro questo risultato produce, a sua volta,

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

La risoluzione degli URI assoluti e relativi e dei percorsi assoluti e relativi nel caso degli URI gerarchici è supportata. La risoluzione dell'URI file:///~calendar rispetto a qualsiasi altro URI restituisce semplicemente l'URI originale, poiché è assoluto. La risoluzione dell'URI relativo (2) precedente rispetto all'URI di base relativo (1) restituisce l'URI normalizzato, ma ancora relativo, URI

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

La relatività, infine, è l'inversa della risoluzione: per due URI normalizzati uv,

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

Questa operazione è spesso utile quando si costruisce un documento contenente URI che devono essere resi relativi all'URI di base del documento laddove possibile. Ad esempio, relativizzazione dell'URI

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

rispetto all'URI di base

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

restituisce l'URI docs/guide/index.htmlrelativo.

<h4> Categorie <di caratteri /h4>

RFC  2396 specifica esattamente quali caratteri sono consentiti nei vari componenti di un riferimento URI. Le categorie seguenti, la maggior parte delle quali sono ricavate da tale specifica, vengono usate di seguito per descrivere questi vincoli:

<blockquote><table cellspacing=2 summary="Describes categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other"><tr><th valign=top>alpha</th><td>The US-ASCII alfabetic characters, 'A'  attraverso 'Z' e 'a'  attraverso 'z'</td></tr tr><<>th valign=top>digit</th><td>I caratteri decimali US-ASCII, '0'  attraverso '9'</td></tr tr><><th valign=top>alphanum</th<>td>All alpha and digit characters</td></tr tr><<>th valign=top> unreserved    </th><td>Tutti i caratteri alfanumerici insieme a quelli nella stringa "_-!.~'()*"</td></tr tr><><th valign=top>punct</th><td>I caratteri nella stringa ",;:$&+="</td></tr tr<>><th valign=top> reserved</th<>td>Tutti i caratteri di punct insieme a quelli nella stringa "?/[]@"</td></tr<>tr><th valign=top>ottetti escaped</th<>td>Escaped, ovvero triplette costituite dal carattere percentuale ('%') seguito da due cifre esadecimali (, 'A'-'F'e'f'-'a' )</td></tr tr<>><th valign=top> other</th<>td>I caratteri Unicode non inclusi nel set di caratteri US-ASCII non sono caratteri di controllo (-'0''9'in base a java.lang.Character#isISOControl(char) Character.isISOControl metodo) e non sono caratteri di spazio (in base al java.lang.Character#isSpaceChar(char) Character.isSpaceChar metodo)  (<b>Deviazione da RFC 2396</b>, limitata a US-ASCII)</td></tr></table></blockquote>

"legal-chars"> Il set di tutti i caratteri URI legali è costituito dai caratteri non riservati, riservati, preceduti da escape e da altri caratteri.

<ottetti di escape h4> , virgolette, codifica e decodifica </h4>

RFC 2396 consente la visualizzazione di ottetti di escape nei componenti user-info, path, query e fragment. L'escape serve due scopi negli URI:

<ul>

<li>

Per codificare caratteri non US-ASCII quando è necessario un URI per essere conforme rigorosamente a RFC  2396 senza contenere altri caratteri.

</li>

<li>

Per virgolette che altrimenti non sono valide in un componente. I componenti user-info, path, query e fragment differiscono leggermente in termini di caratteri considerati legali e illegali.

</li>

</ul>

Questi scopi vengono gestiti in questa classe da tre operazioni correlate:

<ul>

<li>

"encode"> Un carattere viene codificato sostituendolo con la sequenza di ottetti di escape che rappresentano tale carattere nel set di caratteri UTF-8. Il simbolo di valuta euro ('\u005Cu20AC'), ad esempio, è codificato come "%E2%82%AC". (<b>Deviazione da RFC  2396</b>, che non specifica alcun set di caratteri specifico.

</li>

<li>

"virgolette"> Un carattere non valido viene racchiuso tra virgolette semplicemente codificandolo. Il carattere spazio, ad esempio, viene racchiuso tra virgolette sostituendolo con "%20". UTF-8 contiene US-ASCII, pertanto per i caratteri US-ASCII questa trasformazione ha esattamente l'effetto richiesto da RFC 2396.

</li>

<li>

"decode"> Una sequenza di ottetti di escape viene decodificata sostituendola con la sequenza di caratteri rappresentata nel set di caratteri UTF-8. UTF-8 contiene US-ASCII, pertanto la decodifica ha l'effetto di de-virgolette di qualsiasi carattere US-ASCII tra virgolette e di decodifica di qualsiasi carattere non ASCII codificato. Se si verifica un errore di decodifica quando si decodificano gli ottetti di escape, gli ottetti errati vengono sostituiti da '\u005CuFFFD', il carattere di sostituzione Unicode.

</li>

</ul>

Queste operazioni vengono esposte nei costruttori e nei metodi di questa classe come indicato di seguito:

<ul>

<li>

Il costruttore a argomento singolo #URI(java.lang.String) richiede che tutti i caratteri non validi nel relativo argomento siano racchiusi tra virgolette e mantenga tutti gli ottetti di escape e altri caratteri presenti.

</li>

<li>

Il #URI(java.lang.String,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String) citazione caratteri non validi come richiesto dai componenti in cui vengono visualizzati. Il carattere percentuale ('%') viene sempre racchiuso tra virgolette da questi costruttori. Tutti gli altri caratteri vengono mantenuti.

</li>

<li>

I #getRawUserInfo() getRawUserInfometodi , #getRawPath() getRawPath, #getRawFragment() getRawFragment#getRawQuery() getRawQuery, #getRawAuthority() getRawAuthority, e #getRawSchemeSpecificPart() getRawSchemeSpecificPart restituiscono i valori dei relativi componenti corrispondenti in formato non elaborato, senza interpretare gli ottetti di escape. Le stringhe restituite da questi metodi possono contenere sia ottetti di escape che altri caratteri e non conterranno caratteri non validi.

</li>

<li>

I #getUserInfo() getUserInfometodi , #getPath() getPath, #getFragment() getFragment#getQuery() getQuery, #getAuthority() getAuthority, e #getSchemeSpecificPart() getSchemeSpecificPart decodificano gli ottetti di escape nei relativi componenti corrispondenti. Le stringhe restituite da questi metodi possono contenere sia altri caratteri che caratteri non validi e non conterranno ottetti di escape.

</li>

<li>

Il #toString() toString metodo restituisce una stringa URI con tutte le virgolette necessarie, ma che può contenere altri caratteri.

</li>

<li>

Il #toASCIIString() toASCIIString metodo restituisce una stringa URI completamente racchiusa tra virgolette e codificate che non contiene altri caratteri.

</li>

</ul>

<h4> Identità </h4>

Per qualsiasi URI u, è sempre il caso che

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

Per qualsiasi URI u che non contenga una sintassi ridondante, ad esempio due barre prima di un'autorità vuota (come in file:///tmp/ ) o due punti che seguono un nome host, ma nessuna porta (come in http://java.sun.com: ) e che non codifica caratteri tranne quelli che devono essere racchiusi tra virgolette, le identità seguenti contengono anche:

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

in tutti i casi,

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

se u è gerarchico e

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

se u è gerarchico e non ha un'autorità o un'autorità basata su server.

<URI h4> , URL e URL </h4>

Un URI è un identificatore di risorsa uniforme mentre un URL è un localizzatore di risorse uniforme. Di conseguenza, ogni URL è un URI, in modo astratto, ma non ogni URI è un URL. Ciò è dovuto al fatto che esiste un'altra sottocategoria di URI, nomi di risorse uniformi (URN), che denominano le risorse, ma non specificano come individuarle. Gli mailtoURI , newse isbn illustrati in precedenza sono esempi di URN.

La distinzione concettuale tra URI e URL si riflette nelle differenze tra questa classe e la URL classe .

Un'istanza di questa classe rappresenta un riferimento URI nel senso sintattico definito da RFC 2396. Un URI può essere assoluto o relativo. Una stringa URI viene analizzata in base alla sintassi generica senza considerare lo schema, se presente, che specifica. Non viene eseguita alcuna ricerca dell'host, se presente, e non viene costruito alcun gestore di flusso dipendente dallo schema. L'uguaglianza, l'hashing e il confronto vengono definiti rigorosamente in termini di contenuto carattere dell'istanza. In altre parole, un'istanza URI è poco più di una stringa strutturata che supporta le operazioni sintattiche indipendenti dallo schema di confronto, normalizzazione, risoluzione e relativizzazione.

Un'istanza della URL classe, al contrario, rappresenta i componenti sintattici di un URL insieme ad alcune delle informazioni necessarie per accedere alla risorsa descritta. Un URL deve essere assoluto, ovvero deve sempre specificare uno schema. Una stringa URL viene analizzata in base allo schema. Un gestore di flusso viene sempre stabilito per un URL ed è infatti impossibile creare un'istanza url per uno schema per cui non è disponibile alcun gestore. Uguaglianza e hashing dipendono sia dallo schema che dall'indirizzo Internet dell'host, se presenti; il confronto non è definito. In altre parole, un URL è una stringa strutturata che supporta l'operazione sintattica della risoluzione, nonché le operazioni di I/O di rete di ricerca dell'host e l'apertura di una connessione alla risorsa specificata.

Aggiunta nella versione 1.4.

Documentazione java per java.net.URI.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal Android e usato in base ai termini descritti in 2.5 Attribution License Creative Commons 2.5 Attribution License.

Costruttori

URI(String)

Costruisce un URI analizzando la stringa specificata.

URI(String, String, String)

Costruisce un URI dai componenti specificati.

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

Costruisce un URI gerarchico dai componenti specificati.

URI(String, String, String, String)

Costruisce un URI gerarchico dai componenti specificati.

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

Costruisce un URI gerarchico dai componenti specificati.

Proprietà

Authority

Restituisce il componente dell'autorità decodificata di questo URI.

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Fragment

Restituisce il componente frammento decodificato di questo URI.

Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
Host

Restituisce il componente host di questo URI.

IsAbsolute

Indica se questo URI è assoluto o meno.

IsOpaque

Indica se questo URI è opaco o meno.

JniIdentityHashCode

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
JniPeerMembers

Rappresenta un riferimento URI (Uniform Resource Identifier).

Path

Restituisce il componente percorso decodificato di questo URI.

PeerReference

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
Port

Restituisce il numero di porta di questo URI.

Query

Restituisce il componente di query decodificato di questo URI.

RawAuthority

Restituisce il componente dell'autorità non elaborata di questo URI.

RawFragment

Restituisce il componente frammento non elaborato di questo URI.

RawPath

Restituisce il componente del percorso non elaborato di questo URI.

RawQuery

Restituisce il componente di query non elaborato di questo URI.

RawSchemeSpecificPart

Restituisce la parte non elaborata specifica dello schema di questo URI.

RawUserInfo

Restituisce il componente informazioni utente non elaborato di questo URI.

Scheme

Restituisce il componente dello schema di questo URI.

SchemeSpecificPart

Restituisce la parte specifica dello schema decodificata di questo URI.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)
ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)
UserInfo

Restituisce il componente di informazioni utente decodificato di questo URI.

Metodi

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
CompareTo(URI)

Confronta questo URI con un altro oggetto, che deve essere un URI.

Create(String)

Crea un URI analizzando la stringa specificata.

Dispose()

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
Dispose(Boolean)

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Normalize()

Normalizza il percorso di questo URI.

Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitoraggio di questo oggetto.

(Ereditato da Object)
ParseServerAuthority()

Tenta di analizzare il componente autorità di questo URI, se definito, in componenti di informazioni utente, host e porta.

Relativize(URI)

Relativizza l'URI specificato rispetto a questo URI.

Resolve(String)

Costruisce un nuovo URI analizzando la stringa specificata e quindi risolvendola con questo URI.

Resolve(URI)

Risolve l'URI specificato rispetto a questo URI.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
ToArray<T>()

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
ToASCIIString()

Restituisce il contenuto di questo URI come stringa US-ASCII.

ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
ToURL()

Costruisce un URL da questo URI.

UnregisterFromRuntime()

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una>notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IComparable.CompareTo(Object)

Rappresenta un riferimento URI (Uniform Resource Identifier).

IJavaPeerable.Disposed()

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
IJavaPeerable.Finalized()

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Rappresenta un riferimento URI (Uniform Resource Identifier).

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo verificato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Rappresenta un riferimento URI (Uniform Resource Identifier).

GetJniTypeName(IJavaPeerable)

Rappresenta un riferimento URI (Uniform Resource Identifier).

Si applica a