You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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请求,需要配置网络安全策略:

  1. 在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>
  1. 打开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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:17:29