Получить домен второго уровня URL (Java) - PullRequest
16 голосов
/ 17 декабря 2009

Мне интересно, есть ли в java синтаксический анализатор или библиотека для извлечения домена второго уровня (SLD) в URL-адресе - или нет этого алгоритма или регулярного выражения для того же. Например:

URI uri = new URI("http://www.mydomain.ltd.uk/blah/some/page.html");

String host = uri.getHost();

System.out.println(host);

который печатает:

mydomain.ltd.uk

Теперь я хотел бы четко определить компонент SLD ("ltd.uk"). Есть идеи?

Редактировать: В идеале я ищу общее решение, так что я бы сопоставил ".uk" в "Police.uk", ".co.uk" в "bbc.co.uk "и" .com "в" amazon.com ".

Спасибо

Ответы [ 3 ]

14 голосов
/ 17 декабря 2009

Не знаю вашей цели, но Домен Второго Уровня может мало что значить для вас. Вам, вероятно, нужно найти публичный суффикс , а домен под ним - то, что вы ищете.

Компонент Apache Http (HttpClient 4) поставляется с классами для обработки этого,

org.apache.http.impl.cookie.PublicSuffixFilter
org.apache.http.impl.cookie.PublicSuffixListParser

Вам необходимо скачать общедоступный список суффиксов отсюда,

http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1

0 голосов
/ 17 декабря 2009

У меня нет ответа на ваш конкретный случай - и комментарий Джонатана указывает на то, что вам, вероятно, следует провести рефакторинг вашего вопроса.

Тем не менее, я предлагаю взглянуть на класс Reference проекта Restlet . У него множество полезных методов. А поскольку Restlet - это Open Source, вам не нужно было использовать всю библиотеку - вы можете скачать исходный код и добавить только один класс в ваш проект.

0 голосов
/ 17 декабря 2009

Если вы хотите домен второго уровня, вы можете разделить строку на "." и возьмите последние две части. Конечно, это предполагает, что у вас всегда есть домен второго уровня, который не является специфичным для сайта (поскольку это звучит так, как будто вы этого хотите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...