如何使用java从给定的URL获取基本URL

时间:2011-05-16 05:49:21

标签: java jtidy base-url

我正在尝试使用java获取基本URL。我在我的代码中使用了jtidy解析器来获取标题。我正在使用jtidy正确获取标题,但我没有从给定的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/"作为基本网址,从第二个字符串中,我希望"http://www.complex.com/"作为基本网址。

我正在使用代码:

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,但是请告诉我如何从上面的网址获取基本网址?

2 个答案:

答案 0 :(得分:23)

尝试使用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;

答案 1 :(得分:4)

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

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

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

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

new URL(new URL(s2), "/").toString()