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

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

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


当前回答

我在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]。这对我很管用。

其他回答

如果你和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…

在Android模拟器上访问本地主机

从AndroidManifest.xml中添加internet权限 < uses-permission android: name = " android.permission。互联网" / > 添加android:usesCleartextTraffic="true",更多细节在这里: 运行如下命令找到您的系统IP地址:

ifconfig | grep "inet " | grep -v 127.0.0.1

复制从这一步(A)获得的IP地址

运行您的后端应用程序,您可以在localhost或127.0.0.1从您的系统访问它。 现在在android studio,你可以替换URL,如果你在代码中使用,或者你可以使用从步骤(A)获得的ip地址,并尝试在web浏览器中打开, 像这样http://192.168.0.102:8080/

不要忘记在IP地址后添加PORT,在我的例子中,应用程序运行在8080端口上,所以我添加了在(A)中获得的IP,端口为8080

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

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

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

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

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

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

希望这能有所帮助。

如果您正在使用IIS Express,您可能需要绑定到所有主机名,而不仅仅是“localhost”。看看这个精彩的答案:

https://stackoverflow.com/a/15809698/383761

告诉IIS Express本身绑定到所有ip地址和主机名。在你的.config文件中(通常是%userprofile%\My 文档\ IISExpress \ config \ applicationhost。配置,或者 $ (solutionDir) .vs \ config \ applicationhost。Visual Studio配置 2015),找到你网站的绑定元素,并添加 /> . <绑定协议="http" bindingInformation="*:8080:*

请确保将其作为第二个绑定添加,而不是修改现有的绑定,否则VS将重新添加一个附加了(1)的新站点。此外,您可能需要以管理员身份运行VS。

你需要设置URL为10.0.2.2:portNr

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

我的url是10.0.2.2:3229

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

我希望它能有所帮助……