简介
说明
本文介绍Java里网络相关的类:java.net.URL。
URL介绍
URL(Uniform Resource Locator):统一资源定位符。URL 其实就是一个给定的独特资源在 Web 上的地址。
URL结构
分为如下几个部分:
protocol://host:port/path?query#fragment
URL实例
- 协议(protocol):https(所有种类:HTTP、HTTPS、FTP 和 File)
- 主机(host:port):knife.blog.csdn.net
- 端口为(port): 80 ,以上URL实例并未指定端口,因为 HTTP 协议默认的端口号为 80。
- 文件路径(path):/article/details/124509399
- 请求参数(query):name=Tony&age=25
- 定位位置(fragment):abc,定位到网页中 id 属性为 abc 的 HTML 元素位置 。
构建方法
方法 | 作用 |
public URL(String protocol, String host, int port, String file) throws MalformedURLException | 通过给定的参数(协议、主机名、端口号、文件名)创建URL。 |
public URL(String protocol, String host, String file) throws MalformedURLException | 使用指定的协议、主机名、文件名创建URL,端口使用协议的默认端口。 |
public URL(String url) throws MalformedURLException | 通过给定的URL字符串创建URL |
public URL(URL context, String url) throws MalformedURLException | 使用基地址和相对URL创建 |
解析方法
方法 | 作用 |
public String getProtocol() | 返回URL的协议 |
public String getAuthority() | 获取此 URL 的授权部分(主机+端口号)。 |
public String getHost() | 返回URL的主机。 |
public int getPort() | 返回URL端口部分。 |
public int getDefaultPort() | 返回协议的默认端口号。 |
public String getPath() | 返回URL路径部分。 |
public String getQuery() | 返回URL查询参数部分。 |
public String getRef() | 获取此 URL 的锚点(也称为"引用")。 |
public String getFile() | 返回URL文件名部分 |
public URI toURI() | 转为java.net.URI |
其他方法
方法 | 作用 |
public URLConnection openConnection() throws IOException | 打开一个URL连接,并运行客户端访问资源。 |
示例1:通过url创建
package com.example.a;
import java.net.MalformedURLException;
import java.net.URL;
public class Demo {
public static void main(String[] args) {
URL url = null;
try {
url = new URL(
} catch (MalformedURLException e) {
e.printStackTrace();
}
System.out.println("URL:" + url.toString());
System.out.println("Protocol:" + url.getProtocol());
System.out.println("Authority:" + url.getAuthority());
System.out.println("File:" + url.getFile());
System.out.println("Host:" + url.getHost());
System.out.println("Path:" + url.getPath());
System.out.println("Path:" + url.getPort());
System.out.println("DefaultPort:" + url.getDefaultPort());
System.out.println("Query:" + url.getQuery());
System.out.println("Ref:" + url.getRef());
}
}
执行结果
Protocol:https
Authority:knife.blog.csdn.net
File:/article/details/124509399?name=Tony&age=25
Host:knife.blog.csdn.net
Path:/article/details/124509399
Path:-1
DefaultPort:443
Query:name=Tony&age=25
Ref:abc
示例2:通过基类和相对url创建
package com.example.a;
import java.net.MalformedURLException;
import java.net.URL;
public class Demo {
public static void main(String[] args) {
URL originUrl = null;
URL url = null;
try {
originUrl = new URL
url = new URL(originUrl, "1122?number=10#aaa");
} catch (MalformedURLException e) {
e.printStackTrace();
}
System.out.println("URL:" + url.toString());
System.out.println("Protocol:" + url.getProtocol());
System.out.println("Authority:" + url.getAuthority());
System.out.println("File:" + url.getFile());
System.out.println("Host:" + url.getHost());
System.out.println("Path:" + url.getPath());
System.out.println("Path:" + url.getPort());
System.out.println("DefaultPort:" + url.getDefaultPort());
System.out.println("Query:" + url.getQuery());
System.out.println("Ref:" + url.getRef());
}
}
执行结果
Protocol:https
Authority:knife.blog.csdn.net
File:/article/details/1122?number=10
Host:knife.blog.csdn.net
Path:/article/details/1122
Path:-1
DefaultPort:443
Query:number=10
Ref:aaa