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

2022-09-04 06:10:37

我正在尝试使用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";

从第一个字符串开始,我想获取作为基本URL,从第二个字符串中,我想作为基本URL。"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();

我得到,但请让我知道如何从上面获得基本URL给定的URL?titletext


答案 1

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

答案 2

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

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

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

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

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

推荐