我在本地机器上运行一个web服务,该服务运行在localhost:54722上。

我想从Android模拟器中运行的应用程序调用该服务。

我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。


当前回答

Localhost在启动时似乎在我的模拟器中工作得很好,然后我开始得到连接拒绝异常 我使用了127.0.2.2从模拟器浏览器,它工作,当我在模拟器中使用我的android应用程序时,它再次开始显示连接拒绝问题。

然后我做了ifconfig,我使用IP 192.168.2.2,它工作得很好

其他回答

我在Visual Studio上执行IIS Express上的web应用程序时也遇到了同样的问题。要修复它,你需要去你的项目属性,然后点击调试选项卡,将http://localhost:[your PORT]更改为http://127.0.0.1:[your PORT],并将android url设置为http://10.0.2.2:[your PORT]。这对我很管用。

我想向您展示我从我的Android模拟器访问IISExpress Web api的方式。我使用Visual Studio 2015。我从Android Studio调用Android模拟器。

我所需要做的就是将下面这一行添加到我的applicationhost中的绑定配置中。配置文件

<binding protocol="http" bindingInformation="*:<your-port>:" />

然后我检查并使用IP4地址从Android模拟器访问我的API

要求:您必须以管理员身份运行Visual Studio。这篇文章给出了一个完美的方法。

欲了解更多细节,请访问我在github上的帖子

希望这能有所帮助。

我有一个网络服务器运行在我的本地主机。

如果我打开模拟器并想要连接到我的本地主机,我使用的是192.168.x.x。这意味着您应该使用本地局域网ip地址。顺便说一下,您的HttpResponseException(坏请求)并不意味着主机不可达。

其他一些错误会导致此异常。

如果你正在使用一些第三方包,如node express或angular-cli,你需要找到你的机器的IP,并在服务器启动配置中将你的主机附加到该IP(而不是localhost)。然后使用IP从模拟器启动它。例如,我必须使用:ng serve -H 10.149.212.104来使用angular-cli。然后从我使用的模拟器:http://10.149.212.104:4200

我解决了服务层使用Visual Studio IIS Express时的问题。只是指向10.0.2.2:端口不会工作。我没有像其他文章中提到的那样把IIS Express搞得一团糟,而是在IIS Express前面放了一个代理。例如apache或nginx。nginx.conf看起来像

 # Mobile API
 server { 
    listen       8090;
    server_name  default_server;

    location / {
        proxy_pass http://localhost:54722;
    }
  }

然后android需要指向我的IP地址为192.168.x.x:8090