webentwicklung-frage-antwort-db.com.de

ErrnoException: isConnected fehlgeschlagen: EHOSTUNREACH (Keine Route zum Host), wenn das WLAN-Netzwerk geändert wird ICS

Wenn ich meine App auf ics verwende, wechselt mein WLAN-Netzwerk von Netzwerk A zu Netzwerk B, und alle Anforderungen für Bilder werden mit einer Ausnahme angezeigt.

mit Ausnahme fehlgeschlagen

> org.Apache.http.conn.HttpHostConnectException: Connection to
> https://m1.testapp.com refused    at
> org.Apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.Java:183)
>   at
> org.Apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.Java:164)
>   at
> org.Apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.Java:119)
>   at
> org.Apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.Java:360)
>   at
> org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:555)
>   at
> org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:487)
>   at
> org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:465)
>   at
> com.testApp.Android.ws.PooledRequestProcessor$Runner.run(PooledRequestProcessor.Java:298)
>   at
> Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1076)
>   at
> Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:569)
>   at Java.lang.Thread.run(Thread.Java:856)  Caused by:
> Java.net.ConnectException: failed to connect to /109.233.153.38 (port
> 443) after 20000ms: isConnected failed: EHOSTUNREACH (No route to
> Host)     at
> org.Apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.Java:181)
>   ... 10 more  Caused by: Java.net.SocketException: failed to connect
> to /109.233.153.38 (port 443) after 20000ms: isConnected failed:
> EHOSTUNREACH (No route to Host)   at
> libcore.io.IoBridge.isConnected(IoBridge.Java:220)    at
> libcore.io.IoBridge.connectErrno(IoBridge.Java:152)   at
> libcore.io.IoBridge.connect(IoBridge.Java:112)    at
> Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:192)    at
> Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:459)    at
> Java.net.Socket.connect(Socket.Java:842)      at
> org.Apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.Java:119)
>   at
> org.Apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.Java:144)
>   ... 10 more  Caused by: libcore.io.ErrnoException: isConnected
> failed: EHOSTUNREACH (No route to Host)   at
> libcore.io.IoBridge.isConnected(IoBridge.Java:201)

Das Seltsamste ist, dass selbst das Deinstallieren der App und die Neuinstallation sie nicht beheben, sondern nur das Telefon aus- und einschalten.

Ich habe hier ein ähnliches Problem gesehen http://groups.google.com/group/newsrob/browse_thread/thread/ea2f26d9d1753b79/5800e268eeab399c#5800e268eeab399c . Das Problem tritt bei Handys mit 4.0.3 nicht auf, nur bei denen mit 4.0.1, und das Update scheint in Europa noch nicht verfügbar zu sein.

22
David

Vielleicht dauert es eine Weile, bis die Umstellung aus irgendeinem Grund erfolgt ist? Sie können prüfen, ob eine aktive Netzwerkverbindung besteht, bevor Sie die Anforderung stellen:

ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo                 = connectivityManager.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isConnected() && networkInfo.isAvailable())
{
    // DO WHAT YOU NEED TO DO ON THE NETWORK
}
else
{
    // Prompt USER THAT NETWORK IS DISCONNECTED

        Toast.makeText(this, "There is no active network connection!", 5000).show();
}
2
Jabari

Das Wechseln und Einrichten mit einem neuen Netzwerkgerät kann einige Zeit dauern. Der folgende Code kann Ihnen helfen. 

ConnectivityManager connMngr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
    return connMngr.getActiveNetworkInfo().isConnectedOrConnecting();
}
catch (NullPointerException npe) {
    return false;
}
0
ManishL

Sieht so aus, als hätten Sie ein Problem mit dem Protokoll TCP. Es kann sein, dass das WLAN oder 3G-Signal schwach ist. Verwenden Sie try/catch dafür.

0
RagnarR

Ich hatte das gleiche Problem, wie ich es gelöst habe.

  1. Deaktivieren Sie Ihre Firewalls
  2. gehen Sie in Ihrem Serverordner (in meinem Fall habe ich Node.js verwendet) der WWW-Datei zu und lauschen Sie den angegebenen Port an allen Netzwerkschnittstellen.

    server.listen (Port, '10 .8.75.204 ');

    server.on('error', onError);
    server.on('listening', onListening);
    
  3. Stellen Sie sicher, dass es sich bei der IP-Adresse um Ihre lokale Netzwerk-IP-Adresse handelt. Bei Witwen erhalten Sie diese durch Eingabe von ipconfig on der Eingabeaufforderung.

  4. starten Sie den Server neu und versuchen Sie erneut, eine Verbindung herzustellen.

0
chinedu

fehlgeschlagen: EHOSTUNREACH (Keine Route zum Host)

Das Routing wurde also nicht korrekt eingerichtet.

Ich habe festgestellt, dass Sie für einige Geräte das Feld WifiConfigurationname ipAssignmentmanuell auf WifiConfiguration.IpAssignment.DHCP setzen müssen, damit eine DHCP-Anforderung nach dem programmgesteuerten Ändern des WLANs ausgeführt wird. Dies ist nur über Reflection möglich. siehe Antwort, wie man es codiert . Alle Ausnahmen abfangen, da das Feld auf anderen Geräten nicht einmal existiert.

0
Paramaeleon