如何解决URI-getHost返回null为什么?
如@hsz的评论中所述,这是已知的bug。
但是,让我们调试并查看URI
类的源代码。问题出在方法内部:
private int parseHostname(int start, int n)
:
第一个URI解析失败 if ((p < n) && !at(p, n, ':')) fail("Illegal character in
hostname", p);
这是因为_
符号未扫描块内foreseed,它只允许阿尔法,数字和-
符号(L_ALPHANUM
,H_ALPHANUM
,L_DASH
和H_DASH
)。
是的,这尚未在中解决Java 7
。
解决方法
为什么第一个返回null
,而第二个返回mail.yahoo.com
?
这不是很奇怪吗?如果不是,此行为背后的逻辑是什么?
下划线是罪魁祸首吗?为什么?
public static void main(String[] args) throws Exception {
java.net.URI uri = new java.net.URI("http://broken_arrow.huntingtonhelps.com");
String host = uri.getHost();
System.out.println("Host = [" + host + "].");
uri = new java.net.URI("http://mail.yahoo.com");
host = uri.getHost();
System.out.println("Host = [" + host + "].");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。