11

我正在尝试通过 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;

返回的内容字符串应该是我解析的 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)

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

4

2 回答 2

3

确保您的服务器确实在服务!

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

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

ps 我知道这个答案来得有点晚,但我仍然认为它可能会使面临同样问题的其他人受益。

于 2014-02-20T14:42:49.503 回答
1

就我而言,我正在使用带有代理设置的智能手机进行测试。我解决了在电话配置中禁用代理的问题。如果有人遇到此错误,我的建议是证明自己已正确设置了模拟器/物理设备网络。

于 2014-12-15T15:04:38.690 回答