Wie kann ich eine Verbindung zu einer IPv6-Adresse auf Android?
Auf Android, ich bin mit HttpClient Verbindung zu einer web-Adresse wie folgt:
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);
Funktioniert der code einwandfrei bei der Eingabe eines standard-URL, oder eine mit einer v4-IP-Adresse. Allerdings, wenn ich eine v6-Adresse, die Letzte Zeile des obigen code wird nicht mit einem java.net.SocketException: Invalid argument
geworfen.
Veranschaulichen, während die folgende Adresse ein:
http://192.168.1.2:7001/a.MOV
funktioniert ohne ein problem, dieses:
http://[fe80::1cef:49e7:2661:ffda]:7001/ein.MOV
nicht.
Sicher sein, versuchte ich auch mit den neueren HttpURLConnection, um die Verbindung herzustellen, und es führt immer noch in die gleiche exception geworfen.
Ich bin derzeit die Durchführung meiner Prüfung auf einem Google TV-Gerät mit der Android-version 3.2.
So ist es etwas, was ich falsch mache? Und wenn nicht, gibt es eine Möglichkeit, dies zu umgehen, scheinbare Einschränkung von Android?
fe..:
), dann müssen Sie die link, den Sie verwenden möchten. So könnte es so etwas wie http://[fe80::1cef:49e7:2661:ffda%eth0]:7001/a.MOV
. Besser ist die Verwendung von globalen Adressen oder ULA-Adressen, wenn möglich.InformationsquelleAutor yydl | 2013-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie über
Android 3.2
Es nicht unterstützenipv6
Prüfen Sie hier https://android.stackexchange.com/questions/3718/does-android-have-support-for-ipv6
Ich denke, Sie sind stecken, es gibt keine Abhilfe, da Sie Ihre android version ist alt, können Sie aktualisieren können
InformationsquelleAutor Viswanath Lekshmanan
Versuchen, mit den
HttpGet(URI uri)
Konstruktor.Definieren Sie die Adresse in eine
URI
Objekt. Blick auf die Beispiele hier:http://developer.android.com/reference/java/net/URI.html
Können Sie auch eine IPV6-Hostnamen.
InformationsquelleAutor Toshe
Wenn Sie stattdessen konstruieren [neue URL von teilen][1], Sie sollten in der Lage zu bieten, die es in Ihr HttpGet ohne Probleme.
Den Konstruktor, die Sie suchen:
(Entschuldigung für die Formatierung, bin ich auf ein Handy.)
[1]: http://developer.android.com/reference/java/net/URL.html#URL(java.lang.String, java.lang.String, int, java.lang.String)
Wenn Sie noch immer ein ungültiges argument als SocketException, es scheint zu besagen, dass das Gerät möglicherweise keine Unterstützung für IPv6. Wenn es stattdessen ein connectivity-problem, vielleicht ist Ihre Netzwerk-Infrastruktur IPv6 nicht unterstützt?
InformationsquelleAutor Paul Lammertsma