用Java解释URL

时间:2011-11-23 22:12:26

标签: java string url web

我有一个URL字段的用户输入。我希望他们能够输入从“http://andrewducker.wordpress.com/xmlrpc.php”到“andrewducker.wordpress.com”的任何内容,并且能够以相同的终点结束。

我浪费了几个小时搞乱URL的各种构造函数而没有达到令人满意的地方,我应该自己进行字符串检查并构建它吗?

(如果你感兴趣的话,因为我正在写一些会发布从Delicious到Wordpress的链接的东西,我需要用户告诉我他们的Wordpress URL,这样我就可以对它进行xmlrpc调用。)

编辑:我应该说清楚 - 我总是希望/xmlrpc.php位在URL的末尾,这是一个Wordpress标准,所以我不需要做任何复杂的发现。如果它不存在,我只需要附加它。

2 个答案:

答案 0 :(得分:0)

使用正则表达式匹配来查找主机部分。例如,如果您匹配此正则表达式“(https?://)?([^ / \?] +)”主机是第二个匹配组。

答案 1 :(得分:0)

这有两个部分。

首先,如果未指定方案部分,则需要在URI前面添加“http://”,例如

// We could do this with a regex, but its easier to use the built-in parser of the UIR class
URI uri = new URI(uriText);
if (uri.getScheme() == null) {
    uriText = "http://" + uriText;
    uri = new URI(uriText);
}

第二部分更难,因为它涉及服务器重定向。如果不与服务器建立连接,你就无法知道这一点 例如"http://site1.com"可能相当于"http://www.site1.com/index.html"
"http://site2.com"可能相当于"http://site2.com/en/default.aspx"

你最好的选择可能是制作一个HttpUrlConnection并检查301响应,如果你得到一个,那么请使用其中的URI。