URL(Uniform Resource Locator)代表了万维网上的一个资源,例如一个网页或者FTP目录。
本节向您展示如何编写与URL通信的Java程序。URL可以被分解成多个部分,如下所示:
protocol://host:port/path?query
其中,协议可以包括HTTP、HTTPS、FTP以及File等。路径有时也称为文件名,而主机也可以称为权威。
示例
下面是一个协议为HTTP的网页URL示例:
https://www.amrood.com/index.htm?language=en
请注意,此URL未指定端口,在这种情况下会使用该协议的默认端口。对于HTTP,默认端口是80。
Java中的URL类
URL类是java.net
包的一部分。URL类代表了一个统一资源定位符(URL)。URL用来标识在线资源(如网页、网页中使用的图像、视频、文件等)。
URL类提供了几个构造函数和方法来创建、解析和操作URL(或URL对象)。
URL类声明
public final class URL
extends Object
implements Serializable
URL类构造器
java.net.URL
类代表一个URL,并且有一整套方法可以在Java中操作URL。
URL类有几个构造函数来创建URL,包括以下几种:
-
public URL(String protocol, String host, int port, String file) throws MalformedURLException
使用提供的各部分创建一个URL。
-
public URL(String protocol, String host, int port, String file, URLStreamHandler handler) throws MalformedURLException
在指定上下文中使用提供的处理程序和各部分创建一个URL。
-
public URL(String protocol, String host, String file) throws MalformedURLException
与前一个构造器相同,只是使用给定协议的默认端口。
-
public URL(String url) throws MalformedURLException
从给定的字符串创建一个URL。
-
public URL(URL context, String url) throws MalformedURLException
通过组合URL和字符串参数创建一个URL。
-
public URL(URL context, String url, URLStreamHandler handler) throws MalformedURLException
在指定上下文中使用指定处理程序通过组合URL和字符串参数创建一个URL。
URL类方法
URL类包含了许多用于访问其表示的URL各个部分的方法。URL类的一些方法包括但不限于以下几种:
-
public equals(Object obj)
此方法比较此URL与另一个对象是否相等。
-
public String getAuthority()
此方法返回URL的权威部分。
-
public Object getContent()
此方法返回此URL的内容。
-
public Object getContent(Class<?>[] classes)
此方法返回此URL的内容。
-
public int getDefaultPort()
此方法返回URL协议的默认端口。
-
public String getFile()
此方法返回URL的文件名部分。
-
public String getHost()
此方法返回URL的主机部分。
-
public String getPath()
此方法返回URL的路径部分。
-
public int getPort()
此方法返回URL的端口。
-
public String getProtocol()
此方法返回URL的协议部分。
-
public String getQuery()
此方法返回URL的查询部分。
-
public String getRef()
此方法返回URL的引用部分。
-
public String getUserInfo()
此方法返回URL的用户信息部分。
-
public int hashCode()
此方法创建并返回一个适合散列表索引的整数。
-
public URLConnection openConnection()
此方法返回一个表示到URL所引用的远程对象的连接的URLConnection
实例。
-
public URLConnection openConnection(Proxy proxy)
此方法的作用类似于openConnection()
,不同之处在于连接将通过指定的代理进行;不支持代理的协议处理器将忽略代理参数,并建立正常连接。
-
public InputStream openStream()
此方法打开与此URL的连接并返回用于从此连接读取的输入流。
-
public boolean sameFile(URL other)
此方法比较两个URL,排除片段组件。
-
public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
此方法设置应用程序的URLStreamHandlerFactory
。
-
public String toExternalForm()
此方法构建并返回此URL的字符串表示形式。
-
public String toString()
此方法构建并返回此URL的字符串表示形式。
-
public String toURI()
此方法返回一个等同于此URL的URI。
URL类示例
下面的URLDemo
程序演示了URL的各个部分。在命令行上输入一个URL,然后URLDemo
程序输出所提供的URL的每一部分。
import java.io.IOException;
import java.net.URL;
public class URLDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://yoagoa.com/index.htm?language=en#j2se");
System.out.println("URL is " + url.toString());
System.out.println("protocol is " + url.getProtocol());
System.out.println("authority is " + url.getAuthority());
System.out.println("file name is " + url.getFile());
System.out.println("host is " + url.getHost());
System.out.println("path is " + url.getPath());
System.out.println("port is " + url.getPort());
System.out.println("default port is " + url.getDefaultPort());
System.out.println("query is " + url.getQuery());
System.out.println("ref is " + url.getRef());
} catch (IOException e) {
e.printStackTrace();
}
}
}
此程序的一个样本运行结果如下:
输出
URL is https://yoagoa.com/index.htm?language=en
protocol is https
authority is yoagoa.com
file name is /index.htm?language=en
host is yoagoa.com
path is /index.htm
port is -1
default port is 443
query is language=en
ref is j2se