我有一个URL字段的用户输入。我希望他们能够输入从“http://andrewducker.wordpress.com/xmlrpc.php”到“andrewducker.wordpress.com”的任何内容,并且能够以相同的终点结束。
我浪费了几个小时搞乱URL的各种构造函数而没有达到令人满意的地方,我应该自己进行字符串检查并构建它吗?
(如果你感兴趣的话,因为我正在写一些会发布从Delicious到Wordpress的链接的东西,我需要用户告诉我他们的Wordpress URL,这样我就可以对它进行xmlrpc调用。)
编辑:我应该说清楚 - 我总是希望/xmlrpc.php位在URL的末尾,这是一个Wordpress标准,所以我不需要做任何复杂的发现。如果它不存在,我只需要附加它。
答案 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。