Java解析URL的方法
1. 介绍
1.1 介绍
在Java里面如何解析一个完整的URL网址呢?在PHP里面一个函数parse_url搞定,返回一个数组,里面包括了URL的全部组成部分的信息。那么在Java里面有没有这样的函数呢?
答案是肯定的,在Java里面也是有专门解析URL网址参数的,只不过在Java里面是通过一个对象来实现的,这个对象就是URL对象。
2. 教程
2.1 HTTPS
首先我们来一个https的网址看看。
Map<String, Object> map = new LinkedHashMap<>();
URL url;
try {
url = new URL("https://fuge:123456@tongfu.net:8080/home/35/tag/同福编程.html?q=java");
map.put("协议", url.getProtocol());
map.put("主机名称", url.getHost());
map.put("请求端口", url.getPort());
map.put("请求默认端口", url.getDefaultPort());
map.put("请求路径", url.getPath());
map.put("请求参数", url.getQuery());
map.put("请求文件", url.getFile());
map.put("认证信息", url.getAuthority());
map.put("用户信息", url.getUserInfo());
map.put("引用信息", url.getRef());
catch (MalformedURLException e) {
e.printStackTrace();
}
可以看到URL对象把传入的网址进行了拆解,把请求网址的协议、主机名称、端口、路径、参数包括认证信息都解析出来了。需要注意的是,这里的请求端口是实际请求端口,而请求默认端口是根据请求协议来的。
2.2 HTTP
接着我们再来一个http的网址看看和https有什么不同。
Map<String, Object> map = new LinkedHashMap<>();
URL url;
try {
url = new URL("http://fuge:123456@tongfu.net:8080/home/35/tag/同福编程.html?q=java");
map.put("协议", url.getProtocol());
map.put("主机名称", url.getHost());
map.put("请求端口", url.getPort());
map.put("请求默认端口", url.getDefaultPort());
map.put("请求路径", url.getPath());
map.put("请求参数", url.getQuery());
map.put("请求文件", url.getFile());
map.put("认证信息", url.getAuthority());