我正在尝试通过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)
我被困在这里,因为我甚至无法为我的应用程序执行基本身份验证。我做错了什么?
答案 0 :(得分:3)
确保您的服务器实际上正在投放!
当我的Android应用程序向本地网络中的计算机发送请求时,我遇到了完全相同的异常问题。事实证明,webapi服务不可用,因为计算机(即“服务器”)已关闭。
此外,搜索“TIMEDOUT”日志。这是另一个迹象表明您的设置正常,而且服务器没有响应。
P.S。我知道这个答案有点迟了,但我仍然认为它可能会使面临同样问题的其他人受益。
答案 1 :(得分:1)
在我的情况下,我正在使用具有代理设置的智能手机进行测试。我解决了在手机配置上禁用代理的问题。如果有人遇到此错误,我的建议是证明自己已正确设置了仿真器/物理设备网络。