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

问题描述 投票:2回答:2

所以我正在尝试制作一个非常基本的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”。

这样做有什么好的,干净的方式吗?

java url href java-6
2个回答
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()

即使使用锚点,如#myanchor也是可能的。 uri.resolve("#myanchor")的结果是:

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.