【发布时间】:2013-11-25 06:53:51
【问题描述】:
在 Android 上,我使用 HttpClient 连接到这样的网址:
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);
在输入标准 URL 或具有 v4 IP 地址的 URL 时,该代码可以正常工作。但是,当我使用 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 地址。