文档

Java™ 教程-Java Tutorials 中文版
解析 URL
Trail: Custom Networking
Lesson: Working with URLs

解析 URL

URL 类提供了几种方法,可用于查询 URL 对象。你可以使用以下访问器方法从 URL 获取协议,权限,主机名,端口号,路径,查询,文件名和引用:

getProtocol
返回 URL 的协议标识符组件。
getAuthority
返回 URL 的权限组件。
getHost
返回 URL 的主机名组件。
getPort
返回 URL 的端口号组件。getPort 方法返回一个整数,即端口号。如果未设置端口,getPort 将返回-1。
getPath
返回此 URL 的路径组件。
getQuery
返回此 URL 的查询组件。
getFile
返回 URL 的文件名组件。getFile 方法返回与 getPath 相同的内容,加上 getQuery 的值(如果有)。
getRef
返回 URL 的引用组件。

注意: 

请记住,并非所有 URL 地址都包含这些组件。URL 类提供了这些方法,因为 HTTP URL 确实包含这些组件,并且可能是最常用的 URL。URL 类有点以 HTTP 为中心。


无论用于创建 URL 对象的构造函数如何,都可以使用这些 getXXX 方法获取有关 URL 的信息。

URL 类以及这些访问器方法使你不必再次解析 URL!给定 URL 的任何字符串规范,只需创建一个新的 URL 对象并调用任何访问器方法以获取所需的信息。这个小示例程序从字符串规范创建一个 URL,然后使用 URL 对象的访问器方法来解析 URL:

import java.net.*;
import java.io.*;

public class ParseURL {
    public static void main(String[] args) throws Exception {

        URL aURL = new URL("http://example.com:80/docs/books/tutorial"
                           + "/index.html?name=networking#DOWNLOADING");

        System.out.println("protocol = " + aURL.getProtocol());
        System.out.println("authority = " + aURL.getAuthority());
        System.out.println("host = " + aURL.getHost());
        System.out.println("port = " + aURL.getPort());
        System.out.println("path = " + aURL.getPath());
        System.out.println("query = " + aURL.getQuery());
        System.out.println("filename = " + aURL.getFile());
        System.out.println("ref = " + aURL.getRef());
    }
}

这是程序显示的输出:

protocol = http
authority = example.com:80
host = example.com
port = 80
path = /docs/books/tutorial/index.html
query = name=networking
filename = /docs/books/tutorial/index.html?name=networking
ref = DOWNLOADING

Previous page: Creating a URL
Next page: Reading Directly from a URL