Android MAUI应用如何将10.0.2.2的HTTP请求路由至远程IIS Web API
解决方案:Android MAUI无法访问远程IIS部署的Web API
首先明确:10.0.2.2是Android模拟器专门用来映射开发电脑本地localhost的专属IP,它只对运行在你电脑上的本地API有效,完全无法直接指向远程IIS服务器,你的核心问题是误用了这个本地映射IP来访问远程服务,调整思路即可解决。
以下是具体可行的解决步骤:
1. 直接使用远程IIS服务器的实际地址
替换Android端的BaseUrl为服务器的真实IP/域名+端口:
var httpClient = new HttpClient(); var BaseUrl = DeviceInfo.Platform == DevicePlatform.Android ? "http://远程服务器IP:5257" // 比如局域网IP http://192.168.3.10:5257,或公网IP http://203.xxx.xxx.xxx:5257 : "http://api_test:5257"; var response = await httpClient.GetAsync($"{BaseUrl}/api/Cds"); var data = await response.Content.ReadAsStringAsync();
同时需要确保:
- 若用局域网IP:Android模拟器/设备和IIS服务器处于同一网络
- IIS服务器的网站绑定了非localhost的IP(比如绑定0.0.0.0允许所有IP访问)
- 服务器防火墙开放了5257端口的入站规则
2. 解决Android的明文HTTP限制
Android 9及以上版本默认禁止明文HTTP请求,需要配置网络安全策略:
- 在MAUI项目的
Platforms/Android/Resources/xml目录下创建network_security_config.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">远程服务器IP或域名</domain> </domain-config> </network-security-config>
- 打开
Platforms/Android/AndroidManifest.xml,在<application>标签中添加配置:
<application android:networkSecurityConfig="@xml/network_security_config" ...>
3. 若非要通过本地映射IP转发(不推荐)
如果坚持要通过10.0.2.2转发请求到远程服务器,可以在开发电脑上搭建反向代理:
- 用IIS的URL重写模块:创建一个本地站点绑定
10.0.2.2:5257,添加重写规则,将所有请求转发到远程服务器地址 - 或用Nginx配置反向代理:
server { listen 5257; server_name 10.0.2.2; location / { proxy_pass http://远程服务器IP:5257; } }
这种方式多了一层转发,仅适合特殊场景,日常开发优先用步骤1的方案。
内容的提问来源于stack exchange,提问作者eric pregnon
相关产品推荐
相关产品推荐

