开发者

how to fetch base url from the given url using java

I am trying to fetch base URL using java. I have used jtidy parser in my code to fetch the title. I am getting the title properly using jtidy, but I am not getting the base url from the given URL.

I have some URL as input:

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";

From the first string, I want to fetch "http://staff.unak.is/andy/GameProgramming0910/" as a base URL and from the second string, I want "http://www.complex.com/" as a base URL.

I am using code:

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

I am getting titletext, but please can let me know how to get base URL from above given URL?


Try to use the java.net.URL class, it will help you:

For the second case, that it is easier, you could use new URL(s2).getHost();

For the first case, you could get the host and also use getFile() method, and remove the string after the last slash ("/"). something like: (code not tested)

URL url = new URL(s1);
String path = url.getFile().substring(0, url.getFile().lastIndexOf('/'));
String base = url.getProtocol() + "://" + url.getHost() + path;


You use the java.net.URL class to resolve relative URLs.

For the first case: removing the filename from the path:

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

For the second case: setting the root path:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜