在Android上,我使用HttpClient连接到一个网络地址,像这样:输入标准的URL的时候,还是一个有v4的IP地址如何连接到Android上的IPv6地址?
String url = "http://[fe80::1cef:49e7:2661:ffda]:7001/a.MOV";
HttpParams httpParameters = new BasicHttpParams();
HttpClient client = new DefaultHttpClient(httpParameters);
HttpGet httpGet = new HttpGet(url);
HttpResponse response = client.execute(httpGet);
的代码工作正常。但是,当我使用v6地址时,上述代码的最后一行将失败,并引发java.net.SocketException: Invalid argument
。
为了说明,而这个地址:
http://192.168.1.2:7001/a.MOV
会不会有问题的工作,这其中:
http://[fe80::1cef:49e7:2661:ffda]:7001/a.MOV
不会在所有的工作。
可以肯定的是,我也尝试使用较新的HttpURLConnection进行连接,并且仍然导致抛出相同的异常。
我目前正在运行Android版本3.2的Google TV设备上执行测试。
那么有什么我做错了?如果没有,有什么办法可以解决Android的这个明显限制吗?
当使用链接本地地址(以“fe ..:”开头)时,您必须指定要使用的链接。所以它可能类似'http:// [fe80 :: 1cef:49e7:2661:ffda%eth0]:7001/a.MOV'。如果可能,最好使用全局地址或ULA地址。 –