【发布时间】:2018-05-22 09:23:52
【问题描述】:
我是 IPv6 的新手,当我尝试使用 IPv6 创建 URI 时,遇到了这个异常。完整的例外是
java.net.URISyntaxException: Invalid % sequence: %wl in authority at index 32: tcp://[fe80::ceb8:a8ff:fe23:5b84%wlan0]:1883
at libcore.net.UriCodec.validate(UriCodec.java:58)
at java.net.URI.parseURI(URI.java:394)
at java.net.URI.<init>(URI.java:204)
我使用的代码如下所示
String ipv6 = "tcp://[fe80::ceb8:a8ff:fe23:5b84%wlan0]:1883";
URI uri = new URI(ipv6);
SocketAddress sockaddr = new InetSocketAddress(InetAddress.getByName(uri.getHost()), 1883);
Socket socket = new Socket();
socket.connect(sockaddr);
上述代码在运行 Android 7.1.1 的三星 Galaxy S5 中无任何异常运行,但在运行 Android 5 和 6 的 Asus Zenfone GoTV 和 Android 模拟器中不运行。
有人知道为什么吗?
谢谢。
【问题讨论】: