【问题标题】:connection refused when trying to connect to my REST server from android emulator尝试从 android 模拟器连接到我的 REST 服务器时连接被拒绝
【发布时间】:2011-07-01 11:23:27
【问题描述】:

考虑以下 android 代码,请解决我的问题: 我的笔记本电脑上正在运行 REST 服务器..我可以从我的浏览器访问该服务器并获得正确的结果...但是现在我想从我的 android 模拟器中使用它,该模拟器也在我的笔记本电脑上运行,使用以下代码..

 // String URL = "http://localhost:8080/server/rest/user/1";
 String URL = "http://www.google.com";

HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(URL);
HttpResponse result = httpclient.execute(request);

在模拟器中,当我将 URL 传递为 http://www.google.com 时,我得到了正确的响应,但是当我使用我的本地主机 url(上面注释的那个)时,我得到连接被拒绝....

WARN/System.err(901): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:8080 refused
WARN/System.err(901): Caused by: java.net.ConnectException: /127.0.0.1:8080 - Connection refused

如果我在浏览器上运行相同的 url,它就可以工作。 你能告诉我为什么 localhost url 在模拟器中不起作用..?

【问题讨论】:

  • Android Emulator中的本地(机器)主机可以通过IP 10.0.2.2访问
  • 阿迪尔 我已经试过了,但也没有用..请帮帮我。
  • 你读过这些帖子thisthisthis
  • 感谢 Adil 提供这些链接,但所有 3 个链接都建议将 localhost 替换为 10.0.2.2,我已经尝试过,现在出现此错误 java.net.SocketException: Address family not协议支持
  • 如果您仍然遇到问题,请随时尝试one

标签: android android-emulator


【解决方案1】:

Ankur,我遇到了同样的问题,但是用 10.0.2.2 替换 localhost 对我有用。还要确保您已添加该行

在 AndroidManifest.xml 文件的 标记内。

感谢 Adil 和 rogerstone 的回复。

-阿杰马尔​​

【讨论】:

  • 阿迪尔,互联网的安卓权限已经在清单中......因为只有我得到了google.com的回复......
  • 我不知所措。我可以从我的 android 电视上得到这个工作,但不能从 android 电视模拟器。我的本地服务器是 node.... 有什么建议吗?
【解决方案2】:

将您的网址替换为http://10.0.2.2:8080/server/rest/user/1。这应该可以。

【讨论】:

  • 即使我尝试将 localhost 替换为以下 IP 10.0.2.2(如建议的here),它也不起作用。我还尝试通过笔记本电脑的绝对 IP(192.168.1.3)访问它,但没有成功。但是在这种情况下,即使我的浏览器也没有返回任何响应。
【解决方案3】:

确保您没有在主线程上运行连接

【讨论】:

  • 如果您愿意,可以通过详细说明来改进您的答案。如何确保不在主线程中运行连接?万一做了会有什么后果?如何在代码中更正?
猜你喜欢
  • 2019-02-09
  • 1970-01-01
  • 2021-07-03
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
  • 2021-07-08
相关资源
最近更新 更多