Получить домен без субдомена из URL - PullRequest
14 голосов
/ 08 июля 2010

Как правильно получить домен по URL без поддоменов?

В Java из строки вы можете создать новый URL (urlString) и вызвать getHost () для URL, но у вас есть субдомены с ним.

Проблема в том, что могут быть такие хосты, как: subhost.example.com а также subhost.example.co.uk

Есть несколько других из этих двух доменов, таких как co.uk (см. Список на https://wiki.mozilla.org/TLD_List).

Мне кажется, единственный правильный способ получить только домен - выполнить поиск по списку TLD, удалить TLD с конца хоста и забрать все до последнего периода на хосте. Есть ли существующий метод, который делает это? Я не видел ни одного в java.net.URL, и я немного проверил Apache Commons, но не смог найти его там.

Ответы [ 2 ]

17 голосов
/ 25 июня 2014

Я знаю, что это на несколько лет позже, но если кто-то наткнется на этот вопрос, попробуйте следующее:

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

Вышеприведенное вернет example.co.uk.

0 голосов
/ 17 мая 2019

Не уверен, что приведенный выше ответ правильный:

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

В моем случае это работает лучше:

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

Подробности: https://github.com/google/guava/wiki/InternetDomainNameExplained

...