Получить домен без субдомена из URL-адреса

Каков правильный способ получить домен от 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, но не смог найти его.

Ответ 1

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

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

Вышеупомянутое вернет example.co.uk.

Ответ 2

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

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

Это работает лучше в моем случае:

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