Java URL 処理
URL(Uniform Resource Locator)は中国語で「统一资源定位符(統一資源位置指定子)」と呼ばれ、俗に「ウェブアドレス」とも呼ばれます。インターネット上のリソース(ウェブページやFTPアドレスなど)を表します。
この章では、JavaがURLをどのように処理するかを紹介します。URLは次のいくつかの部分に分けられます。
protocol://host:port/path?query#fragment
プロトコル(protocol)は HTTP、HTTPS、FTP、File の場合があり、port はポート番号、path はファイルパスとファイル名です。
HTTPプロトコルのURLの例は次のとおりです:
http://www.example.com/index.html?language=cn#j2se
URLの解析:
- プロトコル(protocol):http
- ホスト(host:port)::www.example.com
- ポート番号(port):80。上記のURL例ではポートを指定していません。HTTPプロトコルのデフォルトのポート番号が80だからです。
- ファイルパス(path):/index.html
- リクエストパラメータ(query)::language=cn
- フラグメント(fragment):j2se。ウェブページ内のid属性がj2seであるHTML要素の位置を指します。
URL クラスメソッド
java.netパッケージにはURLクラスが定義されており、このクラスはURLに関する内容を処理するために使われます。URLクラスの作成と使用について、以下でそれぞれ紹介します。
java.net.URLは豊富なURL構築方法を提供し、java.net.URLを通じてリソースを取得できます。
| 番号 | メソッドの説明 |
|---|---|
| 1 | public URL(String protocol, String host, int port, String file) throws MalformedURLException. 指定されたパラメータ(プロトコル、ホスト名、ポート番号、ファイル名)でURLを作成します。 |
| 2 | public URL(String protocol, String host, String file) throws MalformedURLException 指定されたプロトコル、ホスト名、ファイル名でURLを作成し、ポートはプロトコルのデフォルトポートを使用します。 |
| 3 | public URL(String url) throws MalformedURLException 指定されたURL文字列でURLを作成します。 |
| 4 | public URL(URL context, String url) throws MalformedURLException ベースアドレスと相対URLを使用して作成します。 |
URLクラスにはURLの各部分にアクセスするための多くのメソッドが含まれています。具体的なメソッドと説明は次のとおりです:
| 番号 | メソッドの説明 |
|---|---|
| 1 | public String getPath() URLのパス部分を返します。 |
| 2 | public String getQuery() URLのクエリ部分を返します。 |
| 3 | public String getAuthority() このURLの認可部分を取得します。 |
| 4 | public int getPort() URLのポート部分を返します。 |
| 5 | public int getDefaultPort() プロトコルのデフォルトポート番号を返します。 |
| 6 | public String getProtocol() URLのプロトコルを返します。 |
| 7 | public String getHost() URLのホストを返します。 |
| 8 | public String getFile() URLのファイル名部分を返します。 |
| 9 | public String getRef() このURLのアンカー(「リファレンス」とも呼ばれる)を取得します。 |
| 10 | public URLConnection openConnection() throws IOException URL接続を開き、クライアントを実行してリソースにアクセスします。 |
インスタンス
上記のインスタンスは、java.netのURLクラスを使用してURLの各部分のパラメータを取得する方法を示しています:
URLDemo.java
上記のインスタンスをコンパイルして実行した結果は次のとおりです:
URL 为:http://www.example.com/index.html?language=cn#j2se 协议为:http 验证信息:www.example.com 文件名及请求参数:/index.html?language=cn 主机名:www.example.com 路径:/index.html 端口:-1 默认端口:80 请求参数:language=cn 定位位置:j2se
URLConnections クラスメソッド
openConnection() は java.net.URLConnection を返します。
例:
HTTPプロトコルのURLに接続する場合、openConnection() メソッドは HttpURLConnection オブジェクトを返します。
接続するURLがJARファイルの場合、openConnection() メソッドは JarURLConnection オブジェクトを返します。
など...
URLConnection のメソッドリストは次のとおりです:
| 番号 | メソッドの説明 |
|---|---|
| 1 | Object getContent() URLリンクのコンテンツを取得します。 |
| 2 | Object getContent(Class[] classes) URLリンクのコンテンツを取得します。 |
| 3 | String getContentEncoding() ヘッダーの content-encoding フィールド値を返します。 |
| 4 | int getContentLength() ヘッダーの content-length フィールド値を返します。 |
| 5 | String getContentType() ヘッダーの content-type フィールド値を返します。 |
| 6 | int getLastModified() ヘッダーの last-modified フィールド値を返します。 |
| 7 | long getExpiration() ヘッダーの expires フィールド値を返します。 |
| 8 | long getIfModifiedSince() オブジェクトの ifModifiedSince フィールド値を返します。 |
| 9 | public void setDoInput(boolean input) URL接続は入力および/または出力に使用できます。URL接続を入力に使用する場合は、DoInput フラグを true に設定します。使用しない場合は false に設定します。デフォルト値は true です。 |
| 10 | public void setDoOutput(boolean output) URL接続は入力および/または出力に使用できます。URL接続を出力に使用する場合は、DoOutput フラグを true に設定します。使用しない場合は false に設定します。デフォルト値は false です。 |
| 11 | public InputStream getInputStream() throws IOException URLの入力ストリームを返し、リソースの読み取りに使用します。 |
| 12 | public OutputStream getOutputStream() throws IOException URLの出力ストリームを返し、リソースの書き込みに使用します。 |
| 13 | public URL getURL() URLConnection オブジェクトが接続するURLを返します。 |
インスタンス
以下のインスタンスでは、URLはHTTPプロトコルを使用しています。openConnection はHttpURLConnectionオブジェクトを返します。
URLConnDemo.java
上記のインスタンスをコンパイルして実行した結果は次のとおりです:
$ javac URLConnDemo.java $ java URLConnDemo .....这里会输出サンプル首页(http://www.example.com)的 HTML 内容.....その他の拡張