我是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);上述代码在运行安卓7.1.1的三星Galaxy S5上运行无一例外,但在运行安卓5和6的华硕Zenfone GoTV和安卓模拟器上却无法运行。
有人知道为什么吗?
谢谢。
发布于 2017-12-08 22:46:54
%字符是URL中的特殊字符,需要进行转义。实际上,%是转义字符。您可以作为%25对其进行转义
String ipv6 = "tcp://[fe80::ceb8:a8ff:fe23:5b84%25wlan0]:1883";https://stackoverflow.com/questions/47709142
复制相似问题