我在本地机器上运行一个web服务,该服务运行在localhost:54722上。
我想从Android模拟器中运行的应用程序调用该服务。
我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。
我在本地机器上运行一个web服务,该服务运行在localhost:54722上。
我想从Android模拟器中运行的应用程序调用该服务。
我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。
当前回答
我有一个网络服务器运行在我的本地主机。
如果我打开模拟器并想要连接到我的本地主机,我使用的是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
我使用Windows 10作为我的开发平台,在我的模拟器中访问10.0.2.2:port没有像预期的那样工作,在这个问题上的其他解决方案也有同样的结果。
经过几个小时的深入研究,我发现如果在模拟器启动命令中添加-writable-system参数,事情就会正常工作。
你必须像下面这样通过命令行启动模拟器:
emulator.exe -avd <emulator_name> -writable-system
然后在模拟器中,您可以使用LAN IP地址和绑定端口访问主机上运行的API服务:
http://192.168.1.2:<port>
希望这能帮到你。
关于从命令行启动模拟器:https://developer.android.com/studio/run/emulator-commandline。
你需要设置URL为10.0.2.2:portNr
portNr = ASP给出的端口。我当前的服务在localhost上运行:3229/ service .svc
我的url是10.0.2.2:3229
我用这种方法解决了我的问题
我希望它能有所帮助……
我在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]。这对我很管用。
由于10.0.2.2不是Android的安全域,你必须在API 28+的网络配置中允许非安全域,默认情况下禁止非tls连接。
您可以使用我的以下配置:
在main/res/xml/network_security_config.xml中创建一个新文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">10.0.2.2</domain>
</domain-config>
</network-security-config>
把它指向androidmanifest。xml
<application
......
......
android:networkSecurityConfig="@xml/network_security_config">