|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.net.URL
public final class URL
URL
クラスは、World Wide Web 上の「リソース」を指すポインタである URL (Uniform Resource Locator) を表します。リソースは、ファイルやディレクトリのような単純なものであることも、もっと複雑なオブジェクト (データベースや検索エンジンへのクエリーなど) への参照であることもあります。URL の型とその形式についての詳細は、次の Web サイトで参照することができます。
http://archive.ncsa.uiuc.edu:80/SDG/Software/Mosaic/Demo/url-primer.html
一般に、URL はいくつかの部分に分かれています。上記の例の URL は、使用するプロトコルが http
(HyperText Transfer Protocol) であることと、www.ncsa.uiuc.edu
という名前のホスト上に情報があることを示しています。そして、ホストマシン上にある情報の名前は /demoweb/url-primer.html
です。ホストマシン上にある情報の名前の正確な意味は、プロトコル、およびホストの両方に依存しています。一般的には情報はファイル内に保存されていますが、動的に生成される場合もあります。URL のこうした部分はパスコンポーネントと呼ばれます。
URL にはオプションで「ポート」を指定することができます。これは、TCP 接続を確立するリモートホストマシン上のポート番号を表します。ポート番号を指定しない場合は、そのプロトコルのデフォルトのポート番号が使用されます。たとえば、http
のデフォルトのポート番号は 80
です。別のポートを使用する場合は、たとえば次のように指定します。
http://archive.ncsa.uiuc.edu:80/SDG/Software/Mosaic/Demo/url-primer.html
URL
の構文は、「RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax」(改訂版は「RFC 2732: Format for Literal IPv6 Addresses in URLs」) に定義されています。IPv6 リテラルアドレス形式も scope_ids をサポートします。scope_ids の構文と使用方法については、ここを参照してください。
URL には「フラグメント」(「ref」または「参照 (reference)」とも呼ぶ) を追加できます。フラグメントを指定するには、シャープ記号「#」のあとに文字列を指定します。次にフラグメントの例を示します。
http://java.sun.com/index.html#chapter1
技術的には、このフラグメントは URL の一部ではありません。たとえば、上に示したフラグメントは、指定されたリソースを取得したあと、そのドキュメントの中で chapter1
というタグが付いている部分をアプリケーションによる処理の対象とすることを示します。タグの意味はリソースによって異なります。
アプリケーションは「相対 URL」を指定することもできます。相対 URL は、別の URL を基準として相対的にリソースを検索するための情報だけを含んでいます。相対 URL は HTML ページ内でよく使われます。たとえば、次の URL があるとします。
この HTML ページの中に次の相対 URL が含まれているとします。http://java.sun.com/index.html
これは次の URL の短縮形と見なされます。FAQ.html
http://java.sun.com/FAQ.html
相対 URL が URL のコンポーネントをすべて指定する必要はありません。プロトコルやホスト名、ポート番号を省略した場合には、すべてのコンポーネントが指定されている URL から情報が継承されます。ただし、ファイルコンポーネントの指定は必須です。オプション指定のフラグメントは継承されません。
URL クラス自体が、RFC2396 に定義されているエスケープ機構に従って URL コンポーネントのエンコードやデコードを行うことはありません。URL を呼び出す前にエスケープする必要があるフィールドのエンコードと、URL から返されるエスケープされたフィールドのデコードは、呼び出し側が責任を持って行います。URL は URL エスケープの知識を持っていないので、同じ URL の符号化された形式とデコードされた形式の等価性を認識しません。たとえば、次の 2 つの URL があるとします。
http://foo.com/hello world/ and http://foo.com/hello%20worldこれらは、別々の URL と見なされます。
URI
クラスは、特定の状況で、そのコンポーネントフィールドのエスケープを行います。URL のエンコードとデコードの管理には URI
を使用し、これら 2 つのクラスの相互変換には toURI()
と URI.toURL()
を使用することをお勧めします。
URLEncoder
クラスと URLDecoder
クラスも使用できますが、これらは HTML 形式のエンコード (RFC2396 に定義されているエンコードスキーマとは異なる) 専用です。
コンストラクタの概要 | |
---|---|
URL(String spec)
String 表現から URL オブジェクトを作成します。 |
|
URL(String protocol,
String host,
int port,
String file)
指定された protocol 、host 、port 番号、および file から URL オブジェクトを作成します。 |
|
URL(String protocol,
String host,
int port,
String file,
URLStreamHandler handler)
指定された protocol 、host 、port 番号、file 、および handler を使って、URL オブジェクトを作成します。 |
|
URL(String protocol,
String host,
String file)
指定された protocol 名、host 名、および file 名を使って、URL を作成します。 |
|
URL(URL context,
String spec)
指定されたコンテキスト内の指定された仕様で構文解析することによって、URL を生成します。 |
|
URL(URL context,
String spec,
URLStreamHandler handler)
指定されたコンテキスト内の指定されたハンドラで、指定された仕様を構文解析して URL を生成します。 |
メソッドの概要 | |
---|---|
boolean |
equals(Object obj)
この URL と別のオブジェクトとが等しいかどうかを比較します。 |
String |
getAuthority()
この URL の権限部分を取得します。 |
Object |
getContent()
この URL のコンテンツを取得します。 |
Object |
getContent(Class[] classes)
この URL のコンテンツを取得します。 |
int |
getDefaultPort()
この URL に関連するプロトコルのデフォルトのポート番号を取得します。 |
String |
getFile()
この URL のファイル名を取得します。 |
String |
getHost()
該当する場合、この URL のホスト名を取得します。 |
String |
getPath()
この URL のパス部分を取得します。 |
int |
getPort()
この URL のポート番号を取得します。 |
String |
getProtocol()
この URL のプロトコル名を取得します。 |
String |
getQuery()
この URL のクエリー部分を取得します。 |
String |
getRef()
この URL のアンカー (「参照」とも呼ばれる) を取得します。 |
String |
getUserInfo()
この URL のユーザ情報部分を取得します。 |
int |
hashCode()
ハッシュテーブルのインデックス付けに適した int 値を作成します。 |
URLConnection |
openConnection()
URL が参照するリモートオブジェクトへの接続を表す URLConnection オブジェクトを返します。 |
URLConnection |
openConnection(Proxy proxy)
接続が指定されたプロキシを介して行われる場合を除き、openConnection() と同じです。 |
InputStream |
openStream()
この URL への接続を確立し、その接続から読み込みを行うための InputStream を返します。 |
boolean |
sameFile(URL other)
フラグメントコンポーネント以外の 2 つの URL を比較します。 |
protected void |
set(String protocol,
String host,
int port,
String file,
String ref)
URL のフィールドを設定します。 |
protected void |
set(String protocol,
String host,
int port,
String authority,
String userInfo,
String path,
String query,
String ref)
指定された URL の 8 フィールドを設定します。 |
static void |
setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
アプリケーションの URLStreamHandlerFactory を設定します。 |
String |
toExternalForm()
この URL の文字列表現を構築します。 |
String |
toString()
この URL の文字列表現を構築します。 |
URI |
toURI()
この URL と等価の URI を返します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
コンストラクタの詳細 |
---|
public URL(String protocol, String host, int port, String file) throws MalformedURLException
protocol
、host
、port
番号、および file
から URL
オブジェクトを作成します。
host
は、ホスト名またはリテラル IP アドレスとして表現できます。IPv6 のリテラルアドレスを使用する場合は、「RFC 2732」で指定されているように、角括弧 ([ および ]) で囲む必要があります。ただし、「RFC 2373: IP Version 6 Addressing Architecture」で定義されているリテラル IPv6 アドレスの形式も使用できます。
port
番号 -1
の指定は、URL がプロトコルのデフォルトのポートを使用することを示します。
指定されたプロトコルで最初に URL オブジェクトを作成するときには、そのプロトコルのためのストリームプロトコルハンドラオブジェクトが作成されます。このストリームプロトコルハンドラオブジェクトは、URLStreamHandler
クラスのインスタンスです。
URLStreamHandlerFactory
のインスタンスをストリームハンドラファクトリとして設定している場合は、そのインスタンスの createURLStreamHandler
メソッドがプロトコル文字列を引数として呼び出されて、ストリームプロトコルハンドラを作成するURLStreamHandlerFactory
が設定されていない場合、あるいはファクトリの createURLStreamHandler
メソッドが null
を返した場合は、コンストラクタが次のシステムプロパティの値を探すこのシステムプロパティの値がjava.protocol.handler.pkgs
null
でなければ、値は、垂直スラッシュ文字「|
」で区切られた、パッケージのリストとして解釈される。コンストラクタは、次の名前のクラスをロードしようとするここで、<package> にはパッケージの名前が入り、<protocol> にはプロトコルの名前が入る。このクラスが存在しない場合、あるいはクラスは存在してもそれが<package>.<protocol>.Handler
URLStreamHandler
のサブクラスではない場合には、リストにある次のクラスを試すことになるこのクラスが存在しない場合、あるいはクラスは存在してもそれが<system default package>.<protocol>.Handler
URLStreamHandler
のサブクラスではない場合には、MalformedURLException
がスローされる 検索パス上には、次のプロトコルのプロトコルハンドラが確実に存在することになっています。
その他のプロトコルのプロトコルハンドラも使用できます。http、https、ftp、file、および jar
このコンストラクタによる入力の検証は実行されません。
protocol
- 使用するプロトコル名host
- ホスト名port
- ホスト上でのポート番号file
- ホスト上のファイル
MalformedURLException
- 未知のプロトコルとして指定された場合System.getProperty(java.lang.String)
,
setURLStreamHandlerFactory( java.net.URLStreamHandlerFactory)
,
URLStreamHandler
,
URLStreamHandlerFactory.createURLStreamHandler( java.lang.String)
public URL(String protocol, String host, String file) throws MalformedURLException
protocol
名、host
名、および file
名を使って、URL を作成します。指定されたプロトコルのデフォルトのポートを使用します。
このメソッドの機能は、引数に protocol
、host
、-1
、file
を指定して 4 つの引数を受け取るコンストラクタを呼び出すのと同じです。
このコンストラクタによる入力の検証は実行されません。
protocol
- 使用するプロトコル名host
- ホスト名file
- ホスト上のファイル
MalformedURLException
- 未知のプロトコルとして指定された場合URL(java.lang.String, java.lang.String, int, java.lang.String)
public URL(String protocol, String host, int port, String file, URLStreamHandler handler) throws MalformedURLException
protocol
、host
、port
番号、file
、および handler
を使って、URL
オブジェクトを作成します。port
番号に -1
を指定すると、URL ではプロトコルのデフォルトのポートが使われます。handler
に null
を指定すると、URL では次に示す、プロトコルのデフォルトのストリームハンドラが使われます。java.net.URL#URL(java.lang.String, java.lang.String,int, java.lang.String)。
ハンドラが null ではなく、セキュリティマネージャが存在する場合、NetPermission("specifyStreamHandler")
アクセス権を指定してセキュリティマネージャの checkPermission
メソッドが呼び出されます。この結果、SecurityException になることがあります。
このコンストラクタによる入力の検証は実行されません。
protocol
- 使用するプロトコル名host
- ホスト名port
- ホスト上でのポート番号file
- ホスト上のファイルhandler
- URL のストリームハンドラ
MalformedURLException
- 未知のプロトコルとして指定された場合
SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkPermission
メソッドがストリームハンドラの明示的な指定を許可しない場合System.getProperty(java.lang.String)
,
setURLStreamHandlerFactory( java.net.URLStreamHandlerFactory)
,
URLStreamHandler
,
URLStreamHandlerFactory.createURLStreamHandler( java.lang.String)
,
SecurityManager.checkPermission(java.security.Permission)
,
NetPermission
public URL(String spec) throws MalformedURLException
String
表現から URL
オブジェクトを作成します。
このコンストラクタは、1 番目の引数に null
を指定して、引数が 2 つのコンストラクタを呼び出すことと同じです。
spec
- URL として構文解析される String
MalformedURLException
- 文字列に指定されたプロトコルが未知である場合URL(java.net.URL, java.lang.String)
public URL(URL context, String spec) throws MalformedURLException
参照はスキーマ、権限、パス、クエリー、およびフラグメントの各部分に構文解析されます。パスコンポーネントが空でスキーマ、権限、およびクエリーの各コンポーネントが未定義の場合、新しい URL が現在のドキュメントへの参照となります。それ以外の場合は、仕様のフラグメント部分とクエリー部分が新しい URL に使われます。<scheme>://<authority><path>?<query>#<fragment>
指定された仕様でスキーマコンポーネントが定義され、そのスキーマコンポーネントがコンテキストのスキーマと一致しない場合、仕様だけに基づく絶対 URL として新しい URL が生成されます。そうでない場合は、スキーマコンポーネントはコンテキスト URL を継承します。
権限コンポーネントが仕様にある場合には、仕様は絶対的なものとして扱われ、仕様の権限とパスはコンテキストの権限とパスを置換します。仕様に権限コンポーネントがない場合、新しい URL の権限はコンテキストを継承します。
仕様のパスコンポーネントがスラッシュ文字「/」で始まる場合、パスは絶対的なものとして扱われ、仕様のパスがコンテキストのパスを置換します。
それ以外の場合、RFC2396 で説明されているように、パスは相対パスとして扱われ、コンテキストパスに追加されます。また、この場合、「..」および「.」によって行われたディレクトリ変更を削除することで、パスは標準化されます。
URL 構文解析の詳細な説明については、RFC2396 を参照してください。
context
- 仕様を構文解析するコンテキストspec
- URL として構文解析される String
MalformedURLException
- プロトコルが指定されていないか、未知のプロトコルが見つかった場合URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandler
,
URLStreamHandler.parseURL(java.net.URL, java.lang.String, int, int)
public URL(URL context, String spec, URLStreamHandler handler) throws MalformedURLException
context
- 仕様を構文解析するコンテキストspec
- URL として構文解析される String
handler
- URL のストリームハンドラ
MalformedURLException
- プロトコルが指定されていないか、未知のプロトコルが見つかった場合
SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkPermission
メソッドがストリームハンドラの指定を許可しない場合URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandler
,
URLStreamHandler.parseURL(java.net.URL, java.lang.String, int, int)
メソッドの詳細 |
---|
protected void set(String protocol, String host, int port, String file, String ref)
protocol
- 使用するプロトコル名host
- ホスト名 @param port ホスト上のポート番号file
- ホスト上のファイルref
- URL の内部参照protected void set(String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref)
protocol
- 使用するプロトコル名host
- ホスト名port
- ホスト上でのポート番号authority
- URL の権限部分userInfo
- ユーザ名およびパスワードpath
- ホスト上のファイルref
- URL の内部参照query
- この URL のクエリー部分public String getQuery()
URL
のクエリー部分を取得します。
URL
のクエリー部分。存在しない場合は null
public String getPath()
URL
のパス部分を取得します。
URL
のパス部分。存在しない場合は空の文字列public String getUserInfo()
URL
のユーザ情報部分を取得します。
URL
のユーザ情報部分。存在しない場合は null
public String getAuthority()
URL
の権限部分を取得します。
URL
の権限部分public int getPort()
URL
のポート番号を取得します。
public int getDefaultPort()
URL
に関連するプロトコルのデフォルトのポート番号を取得します。URL スキーマまたは URL の URLStreamHandler がデフォルトのポート番号を定義しない場合は、-1 が返されます。
public String getProtocol()
URL
のプロトコル名を取得します。
URL
のプロトコルpublic String getHost()
URL
のホスト名を取得します。ホスト名の形式は RFC 2732 に準拠します。つまり、リテラル IPv6 アドレスの場合、このメソッドは角括弧 ([ および ]) で囲まれた IPv6 アドレスを返します。
URL
のホスト名public String getFile()
URL
のファイル名を取得します。返されるファイル部分は getPath()
と同じです。これに、getQuery()
がある場合はその値が連結されます。クエリー部分が存在しない場合、このメソッドおよび getPath()
の戻り値は同じになります。
URL
のファイル名。存在しない場合は空の文字列public String getRef()
URL
のアンカー (「参照」とも呼ばれる) を取得します。
URL
のアンカー (「参照」とも呼ばれる)。存在しない場合は null
public boolean equals(Object obj)
指定されたオブジェクトが URL でない場合、このメソッドはただちに false
を返します。
2 つの URL オブジェクトが等しいのは、同じプロトコルを持ち、同じホストを参照し、ホスト上のポート番号が同じで、ファイルとファイルのフラグメントが同じ場合です。
2 つのホストが等価と見なされるのは、両方のホスト名が同じ IP アドレスに解決されるか、どちらかのホスト名を解決できない場合は、大文字か小文字かに関係なくホスト名が等しいか、両方のホスト名が null に等しい場合です。
ホスト比較には名前解決が必要なので、この操作はブロック操作です。
注: equals
の定義された動作は、HTTP の仮想ホストと一致しないことが知られています。
Object
内の equals
obj
- 比較対象の URL
true
、そうでない場合は false
Object.hashCode()
,
Hashtable
public int hashCode()
ハッシュコードは URL 比較に関連するすべての URL コンポーネントに基づいています。したがって、この操作はブロック操作です。
Object
内の hashCode
URL
に使うハッシュコードObject.equals(java.lang.Object)
,
Hashtable
public boolean sameFile(URL other)
フラグメントコンポーネントを考慮しないで、この URL
と other
引数が等しい場合は、true
を返します。
other
- 比較対象の URL
true
、そうでない場合は false
public String toString()
URL
の文字列表現を構築します。このオブジェクトのストリームプロトコルハンドラの toExternalForm
メソッドを呼び出すことによって文字列が作成されます。
Object
内の toString
URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandler.toExternalForm(java.net.URL)
public String toExternalForm()
URL
の文字列表現を構築します。このオブジェクトのストリームプロトコルハンドラの toExternalForm
メソッドを呼び出すことによって文字列が作成されます。
URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandler.toExternalForm(java.net.URL)
public URI toURI() throws URISyntaxException
URI
を返します。このメソッドは new URI (this.toString())
と同様に機能します。
RFC2396 でコンパイルされるすべての URL インスタンスは、URI に変換可能です。ただし、完全準拠でない一部の URL は、URI に変換できません。
URISyntaxException
- この URL の形式が RFC2396 に厳密に従っておらず、URI に変換できない場合public URLConnection openConnection() throws IOException
URL
が参照するリモートオブジェクトへの接続を表す URLConnection
オブジェクトを返します。
この URL のプロトコルハンドラの openConnection
メソッドを呼び出すたびに、新しい接続が開かれます。
HTTP や JAR などの、URL のプロトコルについては、java.lang、java.io、java.util、または java.net のパッケージ、あるいはそのサブパッケージに属する一般または特殊な URLConnection サブクラスがあります。返される接続は、そのサブクラスのものになります。たとえば、HTTP プロトコルに対しては HttpURLConnection が返され、JAR に対しては JarURLConnection が返されます。
URLConnection
IOException
- 入出力例外が発生した場合URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLConnection
,
URLStreamHandler.openConnection(java.net.URL)
public URLConnection openConnection(Proxy proxy) throws IOException
proxy
- 接続に使用するプロキシ。直接接続が望ましい場合は、Proxy.NO_PROXY を指定する必要がある
URLConnection
IOException
- 入出力例外が発生した場合
SecurityException
- セキュリティマネージャが存在し、呼び出し側がプロキシへの接続を許可されていない場合
IllegalArgumentException
- プロキシが null の場合、またはプロキシの型が正しくない場合にスローされる
UnsupportedOperationException
- プロトコルハンドラを実装するサブクラスがこのメソッドをサポートしていない場合URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLConnection
,
URLStreamHandler.openConnection(java.net.URL, java.net.Proxy)
public final InputStream openStream() throws IOException
URL
への接続を確立し、その接続から読み込みを行うための InputStream
を返します。このメソッドは次のメソッドの短縮形です。openConnection().getInputStream()
IOException
- 入出力例外が発生した場合openConnection()
,
URLConnection.getInputStream()
public final Object getContent() throws IOException
openConnection().getContent()
IOException
- 入出力例外が発生した場合URLConnection.getContent()
public final Object getContent(Class[] classes) throws IOException
openConnection().getContent(Class[])
classes
- Java 型の配列
IOException
- 入出力例外が発生した場合URLConnection.getContent(Class[])
public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
URLStreamHandlerFactory
を設定します。このメソッドは、使用する Java 仮想マシンで 1 回しか呼び出せません。
URLStreamHandlerFactory
インスタンスは、プロトコル名からストリームプロトコルハンドラを構築するのに使用されます。
セキュリティマネージャが存在する場合、このメソッドは最初にセキュリティマネージャの checkSetFactory
メソッドを呼び出すことにより、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。
fac
- 目的のファクトリ
Error
- アプリケーションでファクトリがすでに設定されている場合
SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkSetFactory
メソッドがこの操作を許可しない場合URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandlerFactory
,
SecurityManager.checkSetFactory()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。