Как получить базовый 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()