13

我正在尝试使用 java 获取基本 URL。我在我的代码中使用了 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?

4

2 回答 2

26

尝试使用 java.net.URL 类,它会帮助你:

对于第二种情况,它更容易,您可以使用 new 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;
于 2011-05-16T08:53:07.540 回答
9

您使用 java.net.URL 类来解析相对 URL。

对于第一种情况:从路径中删除文件名:

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

对于第二种情况:设置根路径:

new URL(new URL(s2), "/").toString()
于 2017-11-05T11:49:23.507 回答