Java - Как можно изменить относительную строку URL на абсолютный URL, если я знаю домен? - PullRequest
2 голосов
/ 24 марта 2019

Итак, я пытаюсь сделать очень простой веб-браузер, который выполняет очень специфические задачи.Однако мне нужно получить URL-адрес из относительных URL-адресов (например, в тегах. Я могу получить оба URL-адреса, но я не уверен, как подходить к относительным URL-адресам.

Я использую Java 6 для совместимости со старымисистемы (намного старше)

По сути, у меня есть URL "http://example.com/directory/page.html",, затем у меня есть тег с href =" newpage.html ". Я хочу иметь возможность получить URL"http://example.com/directory/newpage.html".

Более того, если его href = "../newpage.html", я хочу получить "http://example.com/newpage.html",

и если его href ="http://example.org/dir/anotherpage.html", Я хочу получить URL "http://example.org/dir/anotherpage.html".

Есть ли хороший, чистый способ сделать это?

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Вы можете просто использовать метод uri.resolve().

Сначала создайте URI из базового URL, который вы загрузили в браузере:

URI uri = new URI("http://example.com/directory/page.html");
URI newpage = uri.resolve("newpage.html");
System.out.println(newpage);

Этонапечатает:

http://example.com/directory/newpage.html

Результат для uri.resolve("../newpage.html"):

http://example.com/newpage.html

Результат для uri.resolve("http://example.org/dir/anotherpage.html"):

http://example.org/dir/anotherpage.html

Конечно, вы можете проверить префикс http перед этим и вместо него вернуть абсолютный URLиспользования uri.resolve().

Возможно даже использование якорей, таких как #myanchor.Результат uri.resolve("#myanchor"):

http://example.com/directory/page.html#myanchor

0 голосов
/ 24 марта 2019

Посмотрите на Norconex commons-lang и URLNormalizer . Изучите, как реализован метод removeDotSegments(), если вы хотите написать код самостоятельно.

...