Java 获取URL组件
URL 被称为 统一资源定位器 ,是一个字符串,用于指定网页、图片、视频、文件等网络资源的位置。URL帮助我们轻松访问和检索网络服务器上的资源。URL也被称为互联网地址或网址。在本节中,我们将讨论如何在Java中获取URL的不同组件。
URL的组成部分
URL的组成部分如下:
- 协议 - 协议指定访问网络资源所使用的方法。该方法用于指定客户端和服务器之间进行通信时所使用的规则和约定。例如:HTTP、HTTPS、FTP、SMTP。
-
主机 - 主机标识资源所在的域,基本上为IP地址。例如:www.google.com
-
端口 - 端口指定处理该请求的服务器。如果未指定端口,则使用默认服务器。例如:80、443。
-
路径 - 路径指定服务器上的网页资源或文件的位置。
-
查询字符串 - 用于将参数以名称-值对的形式传递给网络资源。名称-值对由&分隔。
-
片段 - 用于定位网页资源的特定部分,以#符号标识。
URL示例
https://www.example.com/path/to/file.html?key=value#fragment
- 协议:https
-
主机:www.example.com
-
端口:80
-
路径:/path/to/file.html
-
查询字符串:key=value
-
片段:fragment
现在,我们将讨论使用Java编程语言获取URL的不同组件的各种方法。
方法1:使用URL类
在这种方法中,我们将使用 java.net 包中的 URL 类。它提供了各种内置函数来处理URL。现在,我们将实现一个Java程序来查找所有组件。
步骤
- 使用URL类创建一个URL对象
- 在try块中,使用以下方法打印URL的各个组成部分
- getProtocol() – 获取协议
-
getHost() – 获取主机名
-
getPort() – 获取端口号
-
getPath() – 获取路径
-
getQuery() – 获取查询参数
-
getRef() – 获取锚点
- 在try块中,使用以下方法打印URL的各个组成部分
-
使用catch()捕获异常,并使用getMessage()方法打印错误信息
使用的方法
getProtocol() - 该方法用于获取URL的协议组件,返回一个字符串。
URL url = new URL("https://www.example.com");
String protocol = url.getProtocol(); // gives us the protocol used in URL
getHost() - 此方法用于获取URL的主机组件。它返回一个字符串。
URL url = new URL("https://www.example.com");
String host = url.getHost();
getPort() − 这个方法用于获取URL的端口号。它返回一个整数值。
URL url = new URL("https://www.example.com:8080");
int port = url.getPort();
getPath() − 此方法用于获取URL的路径。
URL url = new URL("https://www.example.com/path/to/resource");
String path = url.getPath();
getQuery() − 该方法用于获取URL的查询字符串。
URL url = new URL("https://www.example.com/path/to/resource?key1=value1&key2=value2");
String query = url.getQuery()
getRef() − 此方法用于获取URL的片段。
URL url = new URL("https://www.example.com/path/to/resource?key1=value1&key2=value2#section1");
String fragment = url.getRef();
示例
在这个示例中,我们创建了一个URL对象,并在创建的URL对象上使用了不同的方法来获取URL的不同组件。
import java.net.URL;
public class Main {
public static void main(String[] args) {
try {
URL url = new URL("https://www.example.com/path/to/file.html?key=value#fragment");
System.out.println("Protocol: " + url.getProtocol());
System.out.println("Host: " + url.getHost());
System.out.println("Port: " + url.getPort());
System.out.println("Path: " + url.getPath());
System.out.println("Query: " + url.getQuery());
System.out.println("Fragment: " + url.getRef());
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
输出
Protocol: https
Host: www.example.com
Port: -1
Path: /path/to/file.html
Query: key=value
Fragment: fragment
方法2: 使用URI类
在这种方法中,我们将使用 ‘java.net’ 包中的 ‘URI’ 类。它提供了许多内置的函数来处理URL。现在,我们将实现一个Java程序来查找所有组件。
步骤
- 使用URI类创建一个URI对象
-
在try块中,使用以下方法打印组件
- getScheme()
-
getHost()
-
getPort()
-
getPath()
-
getQuery()
-
getFragment()
-
使用catch()捕捉异常,并使用getMessage()方法打印消息。
使用的方法
getScheme() - 这个方法类似于getProtocol()。用于获取URL的协议。
URL url = new URL("https://www.example.com/path/to/resource");
String scheme = url.getScheme();
getFragment() − 此方法类似于getRef()。它用于获取URL的片段。
URI uri = new URI("https://www.example.com/path/to/resource?key1=value1&key2=value2#section1");
String fragment = uri.getFragment();
substring() − 此方法用于通过设定起始和结束索引来从较长的字符串中获取一个短字符串作为参数。
String str = "Hello, world!";
String substr1 = str.substring(0, 5); // extracts "Hello"
String substr2 = str.substring(7); // extracts "world!"
indexOf() − 该方法用于在字符串中找到特定字符的索引。
String str = "Hello, world!";
int index1 = str.indexOf('o'); // finds the first occurrence of 'o'
getMessage() − 该方法用于获取异常的错误消息。
errorObject.getMessage()
示例
在这个示例中,我们创建了一个URI对象,并使用了不同的方法来获取URL的不同组成部分。
import java.net.URI;
public class Main{
public static void main(String[] args) {
try {
URI uri = new URI("https://www.example.com/path/to/file.html?key=value#fragment");
System.out.println("Scheme: " + uri.getScheme());
System.out.println("Host: " + uri.getHost());
System.out.println("Port: " + uri.getPort());
System.out.println("Path: " + uri.getPath());
System.out.println("Query: " + uri.getQuery());
System.out.println("Fragment: " + uri.getFragment());
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
输出
Scheme: https
Host: www.example.com
Port: -1
Path: /path/to/file.html
Query: key=value
Fragment: fragment
因此,在本文中我们讨论了使用Java编程语言获取URL组成部分的不同方法。