从URL获取没有子域的域

时间:2010-07-08 00:20:35

标签: java dns subdomain

从没有子域的URL获取域的正确方法是什么?

在Java中,您可以从字符串中创建一个新URL(urlString)并在URL上调用getHost(),但是您有子域名。

问题是因为可能有以下主机: subhost.example.com 和 subhost.example.co.uk

这两个部分领域还有其他几个领域,如co.uk(请参阅https://wiki.mozilla.org/TLD_List上的列表)。

在我看来,只获取域名的唯一正确方法是搜索TLD列表,从主机末尾删除TLD,并在主机的最后一段时间之前取走所有内容。是否有现成的方法可以做到这一点?我没有在java.net.URL中看到一个,我检查了一些apache公共但在那里找不到。

3 个答案:

答案 0 :(得分:16)

我知道这已经晚了几年但如果有人偶然发现这个问题,请尝试以下方法:

InternetDomainName.from("subhost.example.co.uk").topPrivateDomain().name

以上将返回example.co.uk。

答案 1 :(得分:0)

不确定以上答案是否正确:

InternetDomainName.from("test.blogspot.com").topPrivateDomain() -> test.blogspot.com

这对我来说效果更好:

InternetDomainName.from("test.blogspot.com").topDomainUnderRegistrySuffix() -> blogspot.com

详细信息: https://github.com/google/guava/wiki/InternetDomainNameExplained

答案 2 :(得分:0)

以上解决方案需要你添加Guava。如果你使用 OkHttp 或 Retrofit,你也可以使用

PublicSuffixDatabase.get().getEffectiveTldPlusOne("test.blogspot.com")

这给你blogspot.com