Java URL处理

介绍

  URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示为互联网上的资源,如网页或者FTP地址。

URL可以分为如下几部分:

1
protocol://host:port/path?query#fragment

protocol(协议)可以是HTTP、HTTPS、FTP、和File,host为域名,post为端口号,path为 文件路径及文件夹。

URL类方法

  • 在java.net包中定义了URL类,该类用来处理有关URL的内容。对于URL类的创建和使用,下面分别进行介绍。
构造方法 描述
public URL(String protocol, String host, int port, String file) 通过给定的参数(协议、主机名、端口号、文件名)创建URL。
public URL(String protocol, String host, String file) 通过给定的参数(协议、主机名、文件名)创建URL。使用默认的端口号
public URL(String protocol, String host, int port, String file, URLStreamHandler handler) 根据指定的 protocol、host、port 号、file 和 handler 创建 URL 对象。
public URL(String spec) 根据 String 表示形式创建 URL 对象。
  • URL类中包含了很多方法用于访问URL的各个部分,具体方法及描述如下:
方法 描述
public String getPath() 返回URL路径部分
public String getQuery 返回URL查询部分
public String getAuthority() 获取此 URL 的授权部分
public int getPort() 返回URL端口部分
public int getDefaultPort() 返回URL默认号
public String getProtocol() 返回URL的协议
public String getHost() 返回URL的主机
public String getFile() 返回URL文件名部分
public String getRef() 获取此 URL 的锚点(也称为”引用”)
public String UserInfo 获取此 URL 的 userInfo 部分
public URLConnection openConnection() 打开一个URL连接,并运行客户端访问资源

URL类方法实例

  • 下面用百度主页演示URL类中的方法:
1
2
3
4
5
6
7
8
9
10
11
URL url = new URL("https://www.baidu.com/index.html?language=cn");
System.out.println("URL 为:" + url.toString());
System.out.println("协议为:" + url.getProtocol());
System.out.println("验证信息:" + url.getAuthority());
System.out.println("文件名及请求参数:" + url.getFile());
System.out.println("主机名:" + url.getHost());
System.out.println("路径:" + url.getPath());
System.out.println("端口:" + url.getPort());
System.out.println("默认端口:" + url.getDefaultPort());
System.out.println("请求参数:" + url.getQuery());
System.out.println("定位位置:" + url.getRef());
  • 运行结果为:
1
2
3
4
5
6
7
8
9
10
URL 为:https://www.baidu.com/index.html?language=cn
协议为:https
验证信息:www.baidu.com
文件名及请求参数:/index.html?language=cn
主机名:www.baidu.com
路径:/index.html
端口:-1
默认端口:443
请求参数:language=cn
定位位置:null

URLConnections 类方法

URL类中openConnection()返回一个 java.net.URLConnection类。
例如:

  • 如果你连接HTTP协议的URL, openConnection() 方法返回 HttpURLConnection 对象。

  • 如果你连接的URL为一个JAR文件, openConnection() 方法将返回 JarURLConnection 对象。

  • 等等…

URLConnections方法列表:

方法 描述
Object getContent() 检索URL链接内容
Object getContent(Class[] classes) 检索URL链接内容
String getContentEncoding() 返回头部 content-encoding 字段值。
int getContentLength() 返回头部 content-length字段值
String getContentType() 返回头部 content-type 字段值
int getLastModified() 返回头部 last-modified 字段值。
long getExpiration() 返回头部 expires 字段值。
long getIfModifiedSince() 返回对象的 ifModifiedSince 字段值。
public InputStream getInputStream() 返回URL的输入流,用于读取资源
public OutputStream getOutputStream() 返回URL的输出流, 用于写入资源。
public URL getURL() 返回 URLConnection 对象连接的URL

URLConnections 类方法实例

下面用百度主页演示URLConnection方法,采用HTTPS协议。

1
2
3
4
5
6
7
8
9
10
11
12
13
URL url = new URL("https://www.baidu.com/index.html");
URLConnection connection = url.openConnection();

InputStream is = connection.getInputStream();

BufferedReader buffer = new BufferedReader(new InputStreamReader(is));

StringBuilder sb = new StringBuilder();
String content ;
while ((content=buffer.readLine())!=null){
sb.append(content);
}
System.out.println(sb);

编译运行后,会输出百度首页https://www.baidu.com/index.html的html内容。