gpt4 book ai didi

java - URI - getHost 返回 null。为什么?

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:47 25 4
gpt4 key购买 nike

为什么第一个返回 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 + "].");
}

最佳答案

正如@hsz 在评论中提到的,它是一个已知的 bug .

但是,让我们调试并查看 URI 的源代码类(class)。问题出在方法内部:

private int parseHostname(int start, int n) :

解析第一个 URI 在行 if ((p < n) && !at(p, n, ':')) fail("Illegal character in hostname", p); 处失败

这是因为 _扫描 block 中没有预见到符号,因此它只允许字母、数字和 -符号( L_ALPHANUMH_ALPHANUML_DASHH_DASH )。

是的,这还没有在 Java 7 中修复.

关于java - URI - getHost 返回 null。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25993225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com