Android HTTP上的EHOSTUNREACH(无主机路由)

时间:2013-11-13 19:33:36

标签: android http

我正在尝试通过HTTP连接到与我的Android手机在同一网络上的服务器。我的代码如下:

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;

返回的内容String应该是一个JSON字符串供我解析。在一个重要时刻,我成功访问了服务器,但是对于所有其他尝试,我遇到了TimeoutExceptions(我设置了60秒的超时)或更麻烦的错误:

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

这是由以下原因引起的:

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

而这又是由:

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

我被困在这里,因为我甚至无法为我的应用程序执行基本身份验证。我做错了什么?

2 个答案:

答案 0 :(得分:3)

确保您的服务器实际上正在投放!

当我的Android应用程序向本地网络中的计算机发送请求时,我遇到了完全相同的异常问题。事实证明,webapi服务不可用,因为计算机(即“服务器”)已关闭。

此外,搜索“TIMEDOUT”日志。这是另一个迹象表明您的设置正常,而且服务器没有响应。

P.S。我知道这个答案有点迟了,但我仍然认为它可能会使面临同样问题的其他人受益。

答案 1 :(得分:1)

在我的情况下,我正在使用具有代理设置的智能手机进行测试。我解决了在手机配置上禁用代理的问题。如果有人遇到此错误,我的建议是证明自己已正确设置了仿真器/物理设备网络。