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

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

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


当前回答

我解决了服务层使用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

其他回答

对于Laravel宅基地用户: 如果任何人使用Laravel与homestead,您可以在模拟器中使用192.168.10.10访问应用程序后端

还是不行? 另一个好的解决方案是使用ngrok https://ngrok.com/

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

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

解释为什么localhost不能从模拟器提供给任何有基本访问问题的人。对于复杂的案例,请阅读其他答案。

问题:模拟器有自己的本地网络和本地主机映射到模拟器,但不是你的主机!

解决方案:

将服务器绑定为0.0.0.0以使其可用于模拟器的网络 获取笔记本电脑的外部IP地址:ifconfig命令 在Android(或Flutter应用程序)中,使用您的外部接口IP地址,如:192.168.1.10而不是localhost

运行您的本地主机后,您会得到http://localhost:[端口号]/在这里您可以找到您的端口号。

然后从命令中获取你的IP地址,打开你的windows命令,输入ipconfig

在我的例子中,IP是192.168.10.33,所以我的URL将是http://192.168.10.33:[端口号]/。 在Android中,工作室使用这个URL作为你的URL。然后在模拟器的手动代理中设置URL和端口号。

你需要设置URL为10.0.2.2:portNr

portNr = ASP给出的端口。我当前的服务在localhost上运行:3229/ service .svc

我的url是10.0.2.2:3229

我用这种方法解决了我的问题

我希望它能有所帮助……