на Android, я использую HttpClient для подключения к веб-адрес, как так:Как подключиться к IPv6-адресу на Android?
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-адрес. Тем не менее, когда я использую адрес v6, последняя строка вышеуказанного кода будет сбой при запуске java.net.SocketException: Invalid argument
.
Для иллюстрации, в то время как этот адрес:
http://192.168.1.2:7001/a.MOV
будет работать без проблем, это одна:
http://[fe80::1cef:49e7:2661:ffda]:7001/a.MOV
не будет работать вообще.
Чтобы убедиться в этом, я также попытался использовать новый HttpURLConnection, и это все равно приводит к тому же исключению.
В настоящее время я выполняю тестирование на устройстве Google TV под управлением Android версии 3.2.
Так что-то я делаю неправильно? А если нет, есть ли способ обойти это очевидное ограничение Android?
При использовании локальных локальных адресов (начиная с 'fe ..:'), вы должны указать ссылку, которую хотите использовать. Таким образом, это может быть что-то вроде 'http: // [fe80 :: 1cef: 49e7: 2661: ffda% eth0]: 7001/a.MOV'. Лучше использовать глобальные адреса или ULA-адреса, если это возможно. –