gpt4 book ai didi

java - InetAddress.getAllByName() 抛出 UnknownHostException

转载 作者:行者123 更新时间:2023-11-29 00:23:41 25 4
gpt4 key购买 nike

为了让我的应用程序获得 Apple 审核团队的批准,我在不断地进行过程中遇到了另一个障碍。

如标题所示,调用 InetAddress.getAllByName("https://artatlas.io") 时会抛出 UnknownHostException。这只发生在他们的测试过程中。当我在本地 NAT64 网络上测试我的应用程序时(按照 Apple 的建议);错误永远不会发生,并且应用程序按预期运行。

我正在运行的代码:

System.setProperty("java.net.preferIPv6Addresses", "true");
System.setProperty("networkaddress.cache.negative.ttl", "0");
InetAddress[] addrs;

try {
addrs = InetAddress.getAllByName("https://artatlas.io");
String addresses = "";
for(InetAddress addr: addrs){
addresses += addr + "\n";
}
System.out.println("Addresses: " + addresses + "\n");
} catch (IOException e1) {
e1.printStackTrace();
}

我发现,任何附加“https://”的内容似乎都会返回相同的单个 IP 地址:

Addresses: https://artatlas.io/122.150.5.20
Addresses: https://google.com/122.150.5.20
Addresses: https://www.google.com/122.150.5.20

我可以摆脱 https,但我担心以后使用 HttpsURLConnection 会失败(我的连接必须是 https)

testUrl = new URL("https://artatlas.io");
testConn = (HttpsURLConnection) testUrl.openConnection();

我知道HttpsURLConnection使用InetAddress实例来形成其连接,所以问题是它使用什么过程来解析URL字符串,它是否删除了协议(protocol)?这里的正确方法是什么?

最佳答案

主机名不应包含协议(protocol)。主机是相同的,无论您打算使用什么协议(protocol)。后面的HTTPS连接是否失败,与InetAddress.getAllByName()无关(不保证也不能保证成功或失败)。

此时您只处理 DNS,所以它只是 foo.com123.45.67.89 或 IPv6 地址。

关于java - InetAddress.getAllByName() 抛出 UnknownHostException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43601656/

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