Android – EHOSTUNREACH (No route to host) on Android HTTP

androidhttp

I am trying to connect to a server on the same network as my Android phone via HTTP. My code is as follows:

DefaultHttpClient client = new DefaultHttpClient();
String url = "http://192.168.137.1:80";
url += "/ebs/auth.php?username=" + username + "&password=" + password;

HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
HttpEntity respEntity = response.getEntity();

InputStream is = respEntity.getContent();
String content = GeneralUtility.fromStream(is);

return content;

where the returned content String is supposed to be a JSON String for me t parse through. For one golden moment, I succeeded in accessing the server, but for all other attempts I either ran into TimeoutExceptions (I set a 60second timeout) or a more troublesome error:

org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.137.1 refused

This was caused by:

java.net.ConnectException: failed to connect to /192.168.137.1 (port 80): connect failed: EHOSTUNREACH (No route to host)

And this was in turn caused by:

libcore.io.ErrnoException: connect failed: EHOSTUNREACH (No route to host)

I'm stuck here as I can't even perform basic authentication for my app. What am I doing wrong?

Best Answer

Make sure your server is actually serving!

I faced the exact same problem getting the exact same Exceptions when my Android app was sending requests to a computer in the local network. As it turned out, the webapi service was unavailable because the computer (i.e. the "server") was shutdown.

Also, search for a "TIMEDOUT" log. That's another indication that your settings are OK, and it's the server who is not responding.

p.s. I know this answer comes a bit late, but I still think it may benefit others facing the same issue.