在Java中,可以使用java.net.URL
类来解析URL
import java.net.MalformedURLException; import java.net.URL; public class URLParser { public static void main(String[] args) { try { // 定义一个URL字符串 String urlStr = "https://www.example.com:8080/path?param1=value1¶m2=value2#fragment"; // 创建一个URL对象 URL url = new URL(urlStr); // 获取协议 String protocol = url.getProtocol(); System.out.println("协议: " + protocol); // 获取主机名 String host = url.getHost(); System.out.println("主机名: " + host); // 获取端口号 int port = url.getPort(); System.out.println("端口号: " + port); // 获取路径 String path = url.getPath(); System.out.println("路径: " + path); // 获取查询参数 String query = url.getQuery(); System.out.println("查询参数: " + query); // 获取片段标识符 String fragment = url.getRef(); System.out.println("片段标识符: " + fragment); } catch (MalformedURLException e) { e.printStackTrace(); } } }
运行上述代码将输出:
协议: https 主机名: www.example.com 端口号: 8080 路径: /path 查询参数: param1=value1¶m2=value2 片段标识符: fragment
请注意,如果URL没有指定端口号,getPort()
方法将返回-1
。如果需要获取默认端口号(例如,HTTP的默认端口是80,HTTPS的默认端口是443),可以使用url.getDefaultPort()
。