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

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

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


当前回答

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

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

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

其他回答

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

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

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

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

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

当我试图从Android模拟器连接到我的IIS . net Webservice时,我也遇到了同样的问题。

安装NPM Install -g iisexpress-proxy iisexpress-proxy 53990到9000到代理IIS快速端口到9000,并从模拟器如“http://10.0.2.2:9000”访问端口9000

原因似乎是默认情况下,IIS Express不允许从网络连接 https://forums.asp.net/t/2125232.aspx?Bad+Request+Invalid+Hostname+when+accessing+localhost+Web+API+or+Web+App+from+across+LAN

您可以使用IP地址“10.0.2.2”访问您的主机。

Android团队就是这样设计的。所以你的web服务器可以完美地运行在本地主机,从你的Android应用程序,你可以通过“http://10.0.2.2:<hostport>”访问它。

如果模拟器必须通过代理服务器访问internet,则可以从模拟器的扩展控件屏幕配置自定义HTTP代理。打开模拟器后,单击更多,然后单击设置和代理。从这里,您可以定义自己的HTTP代理设置。

如果你和Asp一起工作。Net Web API,在项目中的.vs/config文件夹中,根据您的端口设置修改这些行。假设你使用端口1234和物理路径的项目文件夹设置由IIS是“D:\My Projects\YourSiteName”,那么

<site name="YourSiteName" id="1">
                <application path="/" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="D:\My Projects\YourSiteName" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:1234:*" />
                </bindings>
            </site>

在android studio中,使用“http://10.0.2.2:1234”访问你的api…