web-dev-qa-db-fra.com

ErrnoException: isConnected a échoué: EHOSTUNREACH (aucune route vers l'hôte) lors de la modification du réseau wifi à l'aide de ICS

Lorsque j'utilise mon application sur ics, après avoir modifié mon réseau wifi de réseauA à réseauB, toutes les demandes d'images commencent à revenir avec une exception.

a échoué avec une exception

> 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)

La chose la plus étrange est que même désinstaller et réinstaller l'application ne la résoudra pas, il suffira d'éteindre et d'allumer le téléphone.

J'ai vu un problème similaire ici http://groups.google.com/group/newsrob/browse_thread/thread/ea2f26d9d1753b79/5800e268eeab399c#5800e268eeab399c . Le problème ne se pose pas sur les téléphones dotés de la version 4.0.3, mais uniquement sur ceux dotés de la version 4.0.1, et la mise à jour ne semble pas encore disponible en Europe.

22
David

Peut-être que cela prend un certain temps pour que le basculement ait lieu pour une raison quelconque? Vous pouvez vérifier s'il existe une connexion réseau active avant de faire la demande:

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

Lors de la commutation et de l'établissement avec un nouveau périphérique réseau, cela peut prendre un certain temps. Le code ci-dessous peut vous aider. 

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

On dirait que vous avez un problème avec le protocole TCP. C'est peut-être en cas de faible signal WiFi ou 3G. Utilisez try/catch pour cela.

0
RagnarR

J'ai eu le même problème c'est comment je l'ai résolu.

  1. Désactivez vos pare-feu
  2. allez dans le dossier de votre serveur (dans mon cas, j'utilisais Node.js) le fichier WWW et écoutez sur le port fourni, sur toutes les interfaces réseau.

    server.listen (port, '10.8.75.204 ');

    server.on('error', onError);
    server.on('listening', onListening);
    
  3. Assurez-vous que l'adresse IP correspond à l'adresse IP de votre réseau local. Pour les veuves, cela peut être obtenu en tapant ipconfig on command prompt.

  4. redémarrez le serveur et essayez à nouveau de vous connecter.

0
chinedu

failed: EHOSTUNREACH (Aucune route vers l'hôte)

Donc, le routage n'a pas été configuré correctement.

J’ai constaté que pour certains appareils, vous devez définir le champ WifiConfiguration ’s ipAssignment sur WifiConfiguration.IpAssignment.DHCP manuellement afin qu’une demande DHCP soit effectuée après la modification du programme Wi-Fi par programme. Cela ne peut être fait que par réflexion, voir cette réponse comment le coder . Attrapez toutes les exceptions, car sur d'autres appareils, le champ n'existe même pas.

0
Paramaeleon