Java-如果我知道域,如何将相对URL字符串更改为绝对URL?

时间:2019-03-24 18:41:50

标签: java url href java-6

因此,我正在尝试制作一个非常基本的Web浏览器来完成非常具体的任务。但是,我需要从相对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 个答案:

答案 0 :(得分:1)

您可以简单地使用uri.resolve()方法。

首先从您在浏览器中加载的基本URL创建一个URI

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()

甚至可以使用锚点,例如#myanchoruri.resolve("#myanchor")的结果是:

  

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

答案 1 :(得分:0)

看看Norconex commons-langURLNormalizer。如果您想自己编写代码,请检查如何实现方法removeDotSegments()