Как получить базовый URL из данного URL с помощью Java

Я пытаюсь получить базовый URL с помощью Java. Я использовал анализатор jtidy в своем коде для получения заголовка. Я правильно получаю заголовок, используя jtidy, но я не получаю базовый URL-адрес по указанному URL.

У меня есть некоторые URL в качестве ввода:

String s1 = "http://staff.unak.is/andy/GameProgramming0910/new_page_2.htm";
String s2 = "http://www.complex.com/pop-culture/2011/04/10-hottest-women-in-fast-and-furious-movies";

С первой строки хочу получить "http://staff.unak.is/andy/GameProgramming0910/" в качестве базового URL и из второй строки, я хочу "http://www.complex.com/" в качестве базового URL.

Я использую код:

URL url = new URL(s1);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream in = conn.getInputStream();
Document doc = new Tidy().parseDOM(in, null);
String titleText = doc.getElementsByTagName("title").item(0).getFirstChild()
.getNodeValue();

я получаю titletext, но, пожалуйста, дайте мне знать, как получить базовый URL из указанного выше URL?

2 ответа

Решение

Попробуйте использовать класс java.net.URL, он поможет вам:

Во втором случае, что проще, вы можете использовать новый URL(s2).getHost();

В первом случае вы можете получить хост, а также использовать метод getFile () и удалить строку после последней косой черты ("/"). что-то вроде: (код не проверен)

URL url = new URL(s1);
String path = url.getFile().substring(0, url.getFile().lastIndexOf('/'));
String base = url.getProtocol() + "://" + url.getHost() + path;

Вы используете класс java.net.URL для разрешения относительных URL.

Для первого случая: удаление имени файла из пути:

new URL(new URL(s1), ".").toString()

Для второго случая: установка корневого пути:

new URL(new URL(s2), "/").toString()
Другие вопросы по тегам