🗣 Wd提问: java获取url域名
🤖 Ai回答: 在 Java 中获取 URL 的域名(即主机名,例如 `www.65.hk`),可以使用 `java.net.URL` 类的 `getHost()` 方法。以下是详细步骤和示例代码:
核心方法
java
import java.net.URL;
import java.net.MalformedURLException;
public class UrlDomainExtractor {
public static void main(String[] args) {
String url = https://www.65.hk/path?query=param;
String domain = getDomainFromUrl(url);
System.out.println(Domain: + domain); // 输出: www.65.hk
}
public static String getDomainFromUrl(String urlString) {
try {
URL url = new URL(urlString);
return url.getHost().toLowerCase(); // 返回小写域名(如需)
} catch (MalformedURLException e) {
e.printStackTrace();
return null; // URL 格式无效时返回 null
}
}
}
关键说明
1、`getHost()` 的作用:
返回 URL 的主机名(域名或 IP 地址),不包含端口(例如 `http://65.hk:8080` → `65.hk`)。
自动处理协议(`http`/`https`/`ftp` 等)和路径。
2、处理大小写:
域名通常不区分大小写(如 `Example.com` 和 `65.hk` 视为相同)。
使用 `.toLowerCase()` 统一转换为小写(推荐)。
3、异常处理:
`MalformedURLException`:当输入的 `urlString` 不是有效 URL 时抛出(如缺少协议 `http://`)。
建议捕获异常并返回 `null` 或默认值。
4、特殊 URL 的处理:
| URL 示例 | `getHost()` 返回 | 说明 |
| `http://www.65.hk` | `www.65.hk` | 标准域名 |
| `https://65.hk:443` | `65.hk` | 端口被自动忽略 |
| `ftp://192.168.1.1` | `192.168.1.1` | IP 地址作为域名 |
| `file:///path/to/file` | `null` | `file:` 协议无主机名 |
| `mailto:user@65.hk` | `null` | `mailto:` 协议无主机名 |
常见问题解决
1、如果 URL 是 `file:` 协议(如 `file:///home/user`)
`getHost()` 返回 `null`,需特殊处理:
java
if (urlString.startsWith(file:)) {
return localhost; // 或自定义逻辑
}
2、如果需要排除 `www` 前缀(如 `65.hk`)
通过字符串处理(需谨慎,避免误判):
java
String host = url.getHost();
if (host.startsWith(www.)) {
return host.substring(4);
}
return host;
3、从相对 URL 获取域名(不推荐)
相对 URL(如 `/path`)无法解析域名,必须使用完整 URL(含协议,如 `http://65.hk`)。
完整示例(包含常见场景)
java
import java.net.URL;
import java.net.MalformedURLException;
public class DomainExtractor {
public static void main(String[] args) {
String[] urls = {
https://www.65.hk/path,
http://65.hk:8080,
ftp://192.168.1.1,
file:///var/log,
mailto:user@65.hk
};
for (String url : urls) {
System.out.println(URL: + url);
System.out.println(Domain: + getDomain(url));
System.out.println();
}
}
public static String getDomain(String urlString) {
try {
URL url = new URL(urlString);
String host = url.getHost();
if (host == null) {
// 处理 file: 或 mailto: 等无主机名的协议
return invalid_domain;
}
return host.toLowerCase();
} catch (MalformedURLException e) {
return invalid_url;
}
}
}
输出结果:
URL: https://www.65.hk/path
Domain: www.65.hk
URL: http://65.hk:8080
Domain: 65.hk
URL: ftp://192.168.1.1
Domain: 192.168.1.1
URL: file:///var/log
Domain: invalid_domain
URL: mailto:user@65.hk
Domain: invalid_domain
总结
✅ 正确方法:`new URL(urlString).getHost().toLowerCase()`
⚠️ 注意:
确保输入是完整 URL(含协议,如 `http://`)。
处理 `null` 值(如 `file:` 协议)。
域名通常转为小写(`toLowerCase()`)。
❌ 避免错误:
不要手动解析 URL(如正则匹配),`java.net.URL` 已正确处理标准格式。
此方案适用于所有标准 HTTP/HTTPS/FTP 等协议的 URL,是 Java 官方推荐的处理方式。
📣 商家广告:





0
IP地址: 189.168.16.88
搜索次数: 0
提问时间: 2025-11-12 11:15:06
🛒 域名购买:
app.ln.cn
sbnjt.com
51.biz
zhong.red
ff.biz
xc6.net
3qk.cn
gwgh.cn
06.gold
wt.cx
❓️ 热门提问:
linux云计算运维是做什么的
云主机 折扣
ip电话是什么意思
电脑主机总响
tk的域名
vps云服务器区别
免费云服务器可以吗
idc的相关技术
哪个服务器香港好
重庆云主机
豌豆Ai站群搜索引擎系统
🌐 域名评估:
su.sc.cn
musk.organic
earth2200.net
okhv.cn
n.gs.cn
71.cx
aaa.yn.cn
aaaa.homes
hqie.cn
hc.gs
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
站群平台
贵州软件开发
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。