我在本地机器上运行一个web服务,该服务运行在localhost:54722上。
我想从Android模拟器中运行的应用程序调用该服务。
我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。
我在本地机器上运行一个web服务,该服务运行在localhost:54722上。
我想从Android模拟器中运行的应用程序调用该服务。
我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。
当前回答
如果您正在使用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
我用这种方法解决了我的问题
我希望它能有所帮助……
坏请求通常意味着您发送的数据格式不正确。可能是数据映射不匹配。如果您正在收到坏请求,则意味着您能够连接到服务器,但请求没有正确发送。
我解决了服务层使用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
我想向您展示我从我的Android模拟器访问IISExpress Web api的方式。我使用Visual Studio 2015。我从Android Studio调用Android模拟器。
我所需要做的就是将下面这一行添加到我的applicationhost中的绑定配置中。配置文件
<binding protocol="http" bindingInformation="*:<your-port>:" />
然后我检查并使用IP4地址从Android模拟器访问我的API
要求:您必须以管理员身份运行Visual Studio。这篇文章给出了一个完美的方法。
欲了解更多细节,请访问我在github上的帖子
希望这能有所帮助。
默认AVD使用10.0.2.2,Genymotion使用10.0.3.2