从 URL 获取不带子域的域
从没有子域的 URL 获取域的正确方法是什么?
在 Java 中,您可以从字符串创建一个新的 URL(urlString) 并在该 URL 上调用 getHost(),但您可以使用它的子域。
问题是因为可能有这样的主机: 子主机.example.com 和 subhost.example.co.uk
这两个部分的域名中还有其他几个,例如 co.uk(请参阅 https 上的列表: //wiki.mozilla.org/TLD_List)。
在我看来,仅获取域名的唯一正确方法是通过 TLD 列表进行搜索,从主机末尾删除 TLD,并删除主机中最后一个句点之前的所有内容。是否有现有的方法可以做到这一点?我在 java.net.URL 中没有看到一个,我检查了一点 apache commons 但在那里找不到一个。
What is the proper way to get the domain from a URL without the subdomains?
In Java, from a string you can make a new URL(urlString) and call getHost() on the URL, but you have subdomains with it.
The problem is because there can be hosts like:
subhost.example.com
and
subhost.example.co.uk
There are several other of these two part domains like co.uk (see the list on https://wiki.mozilla.org/TLD_List).
It seems to me the only correct way to get only the domain is to do a search through the TLD list, remove the TLD from the end of the host, and take away everything before the last period in the host. Is there an existing method that does this? I didn't see one in java.net.URL, and I checked apache commons a bit but couldn't find one there.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我知道这已经晚了几年,但如果有人偶然发现这个问题,请尝试以下操作:
上面将返回 example.co.uk。
I know this is a few years late but if anyone stumbles across this question try the following:
The above will return example.co.uk.
不确定上述答案是否正确:
这在我的情况下效果更好:
详细信息:
https://github.com/google/guava/wiki/InternetDomainNameExplained
Not sure if the above answer is correct:
This works better in my case:
Details:
https://github.com/google/guava/wiki/InternetDomainNameExplained
上述解决方案需要您添加Guava。如果您使用 OkHttp 或 Retrofit,您还可以使用
这为您提供
blogspot.com
The above solutions require you to add Guava. If you use OkHttp or Retrofit, you can also use
This gives you
blogspot.com