URI クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
URI (Uniform Resource Identifier) 参照を表します。
[Android.Runtime.Register("java/net/URI", DoNotGenerateAcw=true)]
public sealed class URI : Java.Lang.Object, IDisposable, 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 (Uniform Resource Identifier) 参照を表します。
以下に示すいくつかの小さな偏差を除いて、このクラスのインスタンスは RFC で定義されている URI 参照を表します。2396: Uri (Uniform Resource Identifiers): Generic Syntaxhttp://www.ietf.org/rfc/rfc2396.txt, amended by RFC 2732: URL 内のリテラル IPv6 アドレスの形式http://www.ietf.org/rfc/rfc2732.txt。 リテラル IPv6 アドレス形式では、scope_idsもサポートされます。 ここでは、scope_idsの構文と使用方法について説明します。 このクラスは、コンポーネントから URI インスタンスを作成したり、文字列形式を解析したり、インスタンスのさまざまなコンポーネントにアクセスするためのメソッド、および URI インスタンスを正規化、解決、相対化するためのメソッドを提供します。 このクラスのインスタンスは不変です。
<h3> URI 構文とコンポーネント </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>/trmailto:java-net@java.sun.com<><><tr><td>news:comp.lang.java<td></tr><tr><td>urn:isbn:096139210x</td></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<br>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 のパスは、常に絶対パスです。
その後、URI インスタンスには次の 9 つのコンポーネントがあります。
<blockquote><table summary="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</td></tr><tr><td>scheme-specific-part ></td><td>String</td></tr><tr><td>authority</td><td>String</td><> /tr<><tr>td<user-info></td>tdString<></td>/tr<><tr><host></tdtd>String</td></tr><tr><td>port</td>< td>int</td></tr><tr><td>path</td><td>String</td></tr><tr><td>query</td><td>String</td></tr><tr><td>/td</td><td>String</td></tr></table></blockquote>
特定のインスタンスでは、特定のコンポーネントが 未定義 であるか、個別の値で 定義 されています。 未定義の文字列コンポーネントは nullで表され、未定義の整数コンポーネントは -1で表されます。 文字列コンポーネントは、その値として空の文字列を持つよう定義できます。これは、そのコンポーネントが未定義であるのと同じではありません。
特定のコンポーネントがインスタンス内で定義されているかどうかは、表される URI の型によって異なります。 絶対 URI にはスキーム コンポーネントがあります。 不透明 URI にはスキーム、スキーム固有の部分、場合によってはフラグメントがありますが、他のコンポーネントはありません。 階層 URI には、常にパス (空の場合もあります) とスキーム固有の部分 (少なくともパスを含む) があり、他のコンポーネントが含まれている場合があります。 権限コンポーネントが存在し、サーバー・ベースの場合は、ホスト・コンポーネントが定義され、ユーザー情報およびポート・コンポーネントが定義される場合があります。
<h4> URI インスタンスに対する操作 </h4>
このクラスでサポートされる主要な操作は、 正規化、 解決、 相対化の操作です。
正規化 は、階層 URI のパス コンポーネントから不要な "." および ".." セグメントを削除するプロセスです。 各 "." セグメントは単に削除されます。
".." セグメントは、".."以外のセグメントの前にある場合にのみ削除されます。 正規化は、不透明な URI には影響しません。
解決 とは、ある URI を別の ベース URI に対して解決するプロセスです。 結果の URI は、RFC で指定された方法で両方の URI のコンポーネントから構築されます。2396。元の URI で指定されていないものに対してベース URI からコンポーネントを取得します。 階層 URI の場合、元のパスはベースのパスに対して解決され、正規化されます。 結果 (たとえば、解決の結果)
<blockquote>docs/guide/collections/designfaq.html#28 > (1) </ブロッククォート>
ベース 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>http://java.sun.com/j2se/1.3/demo/jfc/SwingSet2/src/SwingSet2.java</blockquote>
絶対 URI と相対 URI の両方、および階層 URI の場合は絶対パスと相対パスの両方の解決がサポートされます。 他の URI に対して URI file:///~calendar を解決すると、元の URI が生成されます。これは絶対であるためです。 上記の相対 URI (2) を相対ベース URI (1) に対して解決すると、正規化された相対 URI が生成されます。
<blockquote>demo/jfc/SwingSet2/src/SwingSet2.java</blockquote>
最後に、相対化は解像度の逆です。正規化された URI u と nbsp の 2 つについて。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>/<td>US-ASCII 英字, 'A' through 'Z'と'a' through 'z'</td></tr><tr><th valign=top>digit</th><td>10 進数の文字 US-ASCII'0' through '9'</td></tr><tr><th valign=top>alphanum</th><td>すべての英数字と数字<></tr/tr><tr><th valign=top>unreserved ></th><td</td></tr><tr><th valign=top>punct</th><td>文字列内の文字",;:$&+="</ td></tr><trtr><th valign=top>reserved</th><td>文字列"?/[]@"/td</tr><>tr<th valign=top に含まれるすべての><り文字>escaped</th><td>Escaped オクテット、つまり、パーセント文字 ('%') とそれに続く 2 つの 16 進数 ('0'-'9'、 'A'-'F'および'a'-'f')</td></tr><tr><th valign=top>other</th><td>US-ASCII 文字セットに含まれていない Unicode 文字は制御文字ではありません (java.lang.Character#isISOControl(char) Character.isISOControlに従って)メソッド)、およびスペース文字ではありません (java.lang.Character#isSpaceChar(char) Character.isSpaceCharメソッドに従います) </td></tr></table></blockquote>
"legal-chars"> すべての有効な URI 文字のセットは、 予約されていない文字、 予約されていない文字、 エスケープ文字、 およびその他 の文字で構成されます。
<h4> エスケープオクテット、引用符、エンコード、デコード </h4>
RFC 2396 では、エスケープされたオクテットをユーザー情報、パス、クエリ、フラグメントの各コンポーネントに表示できます。 エスケープは URI で次の 2 つの目的を果たします。
<ul>
<li>
URI が RFC に厳密に準拠する必要がある場合に、US-ASCII 以外の文字を エンコード する。 他 の文字を含まない 2396。
</li>
<li>
コンポーネント内で無効な文字を 引用符で囲 む。 ユーザー情報、パス、クエリ、フラグメントの各コンポーネントは、どの文字が有効で違法と見なされているかによって若干異なります。
</li>
</ul>
これらの目的は、次の 3 つの関連する操作によってこのクラスで提供されます。
<ul>
<li>
"encode"> 文字は、UTF-8 文字セット内のその文字を表すエスケープされたオクテットのシーケンスに置き換えることによって エンコード されます。 たとえば、ユーロ通貨記号 ('\u005Cu20AC') は、 "%E2%82%AC"としてエンコードされます。
(<b> RFC からの削除;2396</b>。
</li>
<li>
"quote"> 無効な文字はエンコードするだけで 引用符で囲 まれます。 たとえば、スペース文字は、 "%20"に置き換えることで引用符で囲まれます。 UTF-8 には US-ASCII が含まれているので、US-ASCII 文字の場合、この変換は RFC 2396 で必要な効果を正確に持ちます。
</li>
<li>
"decode"> エスケープされたオクテットのシーケンスは、UTF-8 文字セットで表される文字のシーケンスに置き換えることによって デコード されます。 UTF-8 には US-ASCII が含まれているので、デコードは引用符で囲まれた US-ASCII 文字をデクォートする効果と、エンコードされた非US-ASCII 文字をデコードする効果があります。 エスケープされたオクテットをデコードするときにデコード エラーが発生した場合、誤ったオクテットは Unicode 置換文字である '\u005CuFFFD'に置き換えられます。
</li>
</ul>
これらの操作は、このクラスのコンストラクターとメソッドで次のように公開されます。
<ul>
<li>
#URI(java.lang.String) 単一引数コンストラクターでは、引数内の無効な文字を引用符で囲む必要があり、エスケープされたオクテットとその 他 の文字が保持されます。
</li>
<li>
#URI(java.lang.String,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String) の複数引数コンストラクターは、出現するコンポーネントで必要に応じて無効な文字を引用符で囲みます。 パーセント文字 ('%') は、常にこれらのコンストラクターによって引用符で囲まれます。
その他の文字は保持されます。
</li>
<li>
#getRawUserInfo() getRawUserInfo、#getRawPath() getRawPath、#getRawQuery() getRawQuery、#getRawFragment() getRawFragment、#getRawAuthority() getRawAuthority、および#getRawSchemeSpecificPart() getRawSchemeSpecificPartの各メソッドは、エスケープされたオクテットを解釈せずに、対応するコンポーネントの値を未加工の形式で返します。 これらのメソッドによって返される文字列には、エスケープされたオクテットとその 他 の文字の両方が含まれている場合があり、無効な文字は含まれません。
</li>
<li>
#getUserInfo() getUserInfo、#getPath() getPath、#getQuery() getQuery、#getFragment() getFragment、#getAuthority() getAuthority、および#getSchemeSpecificPart() getSchemeSpecificPartメソッドは、対応するコンポーネント内のエスケープされたオクテットをデコードします。 これらのメソッドによって返される文字列には、 他 の文字と無効な文字の両方が含まれる場合があり、エスケープされたオクテットは含まれません。
</li>
<li>
#toString() toString メソッドは、必要なすべての引用符を含む URI 文字列を返しますが、他の文字が含まれている可能性があります。
</li>
<li>
#toASCIIString() toASCIIString メソッドは、他の文字を含まない完全に引用符で囲まれたエンコードされた URI 文字列を返します。
</li>
</ul>
<h4> ID </h4>
どの URI u の場合でも、常に次のようになります。
<blockquote>new URI(u.toString()).equals(u)>。
</blockquote>
空の機関の前に 2 つのスラッシュ (> のように) またはホスト名の後にコロンが続くがポートがない (file:///tmp/ のように) 冗長な構文が含まれていない URI http://java.sun.com: の場合、引用符で囲む必要がある文字を除いて文字をエンコードしない場合、次の ID も保持されます。
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 の別のサブカテゴリである UNIFORM Resource Name (URN) があり、リソースに名前を付けますが、その場所を指定していないためです。 上で示した mailto、 news、 isbn URI は、URL の例です。
URI と URL の概念的な違いは、このクラスと URL クラスの違いに反映されます。
このクラスのインスタンスは、RFC 2396 によって定義された構文上の意味での URI 参照を表します。 URI は、絶対または相対のいずれかになります。 URI 文字列は、指定したスキーム (存在する場合) に関係なく、ジェネリック構文に従って解析されます。 ホストの参照 (存在する場合) は実行されません。スキームに依存するストリーム ハンドラーは構築されません。 等値、ハッシュ、および比較は、インスタンスの文字コンテンツの観点から厳密に定義されます。 言い換えると、URI インスタンスは、比較、正規化、解決、相対化の構文的なスキームに依存しない操作をサポートする構造化文字列に過わりません。
対照的に、 URL クラスのインスタンスは、URL の構文コンポーネントと、記述されているリソースへのアクセスに必要な情報の一部を表します。 URL は絶対である必要があります。つまり、常にスキームを指定する必要があります。 URL 文字列は、そのスキームに従って解析されます。 ストリーム ハンドラーは常に URL に対して確立され、実際にはハンドラーが使用できないスキームの URL インスタンスを作成することはできません。 等価性とハッシュ性は、ホストのスキームとインターネット アドレス (存在する場合) の両方によって異なります。比較が定義されていません。 つまり、URL は、解決の構文操作と、ホストを検索して指定されたリソースへの接続を開くネットワーク I/O 操作をサポートする構造化文字列です。
1.4 で追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| URI(String, String, String, Int32, String, String, String) |
指定されたコンポーネントから階層 URI を構築します。 |
| URI(String, String, String, String, String) |
指定されたコンポーネントから階層 URI を構築します。 |
| URI(String, String, String, String) |
指定されたコンポーネントから階層 URI を構築します。 |
| URI(String, String, String) |
指定されたコンポーネントから URI を構築します。 |
| URI(String) |
指定された文字列を解析して URI を構築します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Authority |
この URI のデコードされた機関コンポーネントを返します。 |
| Class |
この |
| Fragment |
この URI のデコードされたフラグメント コンポーネントを返します。 |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| Host |
この URI のホスト コンポーネントを返します。 |
| IsAbsolute |
この URI が絶対かどうかを示します。 |
| IsOpaque |
この URI が不透明かどうかを示します。 |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| JniPeerMembers |
URI (Uniform Resource Identifier) 参照を表します。 |
| Path |
この URI のデコードされたパス コンポーネントを返します。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| Port |
この URI のポート番号を返します。 |
| Query |
この URI のデコードされたクエリ コンポーネントを返します。 |
| RawAuthority |
この URI の未加工の機関コンポーネントを返します。 |
| RawFragment |
この URI の生フラグメント コンポーネントを返します。 |
| RawPath |
この URI の生パス コンポーネントを返します。 |
| RawQuery |
この URI の生クエリ コンポーネントを返します。 |
| RawSchemeSpecificPart |
この URI の生スキーム固有の部分を返します。 |
| RawUserInfo |
この URI の生のユーザー情報コンポーネントを返します。 |
| Scheme |
この URI のスキーム コンポーネントを返します。 |
| SchemeSpecificPart |
この URI のデコードされたスキーム固有の部分を返します。 |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
| UserInfo |
この URI のデコードされたユーザー情報コンポーネントを返します。 |
メソッド
| 名前 | 説明 |
|---|---|
| Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
| CompareTo(URI) |
この URI を別のオブジェクト (URI である必要があります) と比較します。 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| Create(String) |
指定された文字列を解析して URI を作成します。 |
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| Equals(Object) |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| JavaFinalize() |
古い.
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
| Normalize() |
この URI のパスを正規化します。 |
| Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
| NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
| ParseServerAuthority() |
この URI の機関コンポーネント (定義されている場合) を、ユーザー情報、ホスト、およびポート のコンポーネントに解析しようとします。 |
| Relativize(URI) |
指定された URI をこの URI に対して相対化します。 |
| Resolve(String) |
指定された文字列を解析し、この URI に対して解決することで、新しい URI を構築します。 |
| Resolve(URI) |
指定された URI をこの URI に対して解決します。 |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| ToArray<T>() |
このJava配列ラッパーからマネージド配列を作成します。 (継承元 Object) |
| ToASCIIString() |
この URI の内容を US-ASCII 文字列として返します。 |
| ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
| ToURL() |
この URI から URL を構築します。 |
| UnregisterFromRuntime() |
相互運用ランタイムからこのJava ピアの登録を解除します。 (継承元 Object) |
| Wait() |
現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。 (継承元 Object) |
| Wait(Int64, Int32) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
| Wait(Int64) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IComparable.CompareTo(Object) |
URI (Uniform Resource Identifier) 参照を表します。 |
| IJavaPeerable.Disposed() |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| IJavaPeerable.Finalized() |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
URI (Uniform Resource Identifier) 参照を表します。 (継承元 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
URI (Uniform Resource Identifier) 参照を表します。 |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
URI (Uniform Resource Identifier) 参照を表します。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|