第 13 章 Java 中的网络编程 Java 网络编程
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
当想到网络时,你可能会想到基于网络的应用程序和服务。如果让你深入了解,你可能会考虑到网络浏览器和网络服务器等工具,它们支持这些应用程序并在网络中移动数据。在本章中,我们将了解 Java 如何与网络服务交互。我们还将窥探一下引擎盖,讨论java.net包中的一些低级网络类。
统一资源定位器
统一资源定位符(URL) 指向互联网上的一个对象。它是一个文本字符串,用于标识一个项目,告诉你在哪里可以找到它,并指定一种与它通信或从其来源检索它的方法。URL 可以指向任何类型的信息源:静态数据,如本地文件系统、网络服务器或 FTP 网站上的文件。它也可以指向更动态的对象,如 RSS 新闻源或数据库中的记录。URL 还可以指向其他资源,如电子邮件地址。
由于在互联网上定位一个项目有许多不同的方法,而且不同的媒介和传输方式需要不同种类的信息,因此 URL 可以有多种形式。最常见的形式有四个组成部分,如图 13-1 所示:网络主机或服务器、物品名称、物品在该主机上的位置以及主机应采用的通信协议。
图 13-1. URL 的常见元素
protocol(也称为 "方案")是一个标识符,如http 、https 或ftp ; hostname通常是 互联网主机和域名;以及 path和 resource组成一个唯一路径,用于标识该主机上的对象。
这种形式的变体在 URL 中加入了额外的信息。例如,你可以指定片段标识符(以 "#"字符开头的后缀)来引用文档中的部分。还有其他更专业的 URL 类型,如用于电子邮件地址的 "mailto "URL 或用于寻址数据库组件等的 URL。这些类型的定位器可能不完全遵循这种格式,但一般都包含协议、主机和路径。有些定位器更适合称为统一资源标识符(或 URI),它可以指定有关资源名称或位置的更多信息。URL 是 URI 的子集。
由于大多数 URL 都有层次或路径的概念,我们有时会把相对于另一个 URL 的 URL 称为基本 URL。在这种情况下,我们使用基本 URL 作为起点,并提供附加信息来定位相对于该 URL 的对象。例如,基本 URL 可能指向网络服务器上的一个目录,而相对 URL 可能命名该目录或子目录中的一个特定文件。
URL 类
Javajava.net.URL 类表示 URL 地址,为访问服务器上的文档和应用程序等网络资源提供了一个简单的 API。它可以使用一套可扩展的协议和内容处理程序来执行必要的通信,理论上甚至可以进行数据转换。有了URL 类,应用程序只需几行代码就能打开与服务器的连接并检索内容。
URL 类的实例管理着 URL 字符串中的所有组件信息,并提供了检索其所识别对象的方法。我们可以从完整的字符串或各部分构建URL 对象:
try{URLaDoc=newURL("http://foo.bar.com/documents/homepage.html");URLsameDoc=newURL("http","foo.bar.com","/documents/homepage.html");}catch
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access