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

React Native调用dotnet core REST API HTTPS请求安卓模拟器报错问题

React Native安卓端HTTPS请求.NET Core API报错问题排查与解决

第一步:定位核心问题原因

  • 该问题90%以上的场景是证书信任规则差异导致:iOS模拟器会共享宿主机系统的证书信任列表,本地开发用的dotnet自签证书只要在宿主机受信任,iOS侧就能正常请求;但安卓系统的证书信任列表和宿主机完全独立,默认不信任本地自签证书,会直接拦截HTTPS请求。
  • 快速验证方法:打开安卓模拟器自带的系统浏览器,输入你的API地址(注意安卓模拟器访问宿主机本地服务不能用localhost/127.0.0.1,必须用固定映射IP10.0.2.2,例如https://10.0.2.2:5001/health),如果浏览器提示证书不安全,即可确认是证书信任问题。

第二步:排查安卓应用网络配置

  • 安卓9(API Level 28)及以上系统默认对网络请求做了严格限制,需要确认你项目中android/app/src/main/res/xml/network_security_config.xml的配置是否符合要求:

以下配置仅适用于开发环境,生产环境必须删除开发专属的信任规则,避免安全风险

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">10.0.2.2</domain>
        <domain includeSubdomains="true">你的服务端正式域名</domain>
        <trust-anchors>
            <certificates src="system" />
            <!-- 开发环境临时信任用户手动安装的证书,生产环境删除该行 -->
            <certificates src="user" />
        </trust-anchors>
    </domain-config>
</network-security-config>
  • 同时确认android/app/src/main/AndroidManifest.xml的application标签已添加属性:android:networkSecurityConfig="@xml/network_security_config"

对应解决方案

开发环境临时方案

  • 方法1:将.NET Core的自签证书导入安卓模拟器信任列表
    1. 宿主机执行命令导出证书:dotnet dev-certs https -ep ./dev-cert.pfx -p 自定义密码
    2. 转换为安卓可识别的crt格式:openssl pkcs12 -in dev-cert.pfx -clcerts -nokeys -out dev-cert.crt
    3. 将crt文件拖入安卓模拟器窗口,按照系统提示完成证书安装即可
  • 方法2:临时跳过证书校验(严禁在生产环境使用),以axios为例:
// 仅开发环境生效
if(process.env.NODE_ENV === 'development') {
  const https = require('https');
  axios.defaults.httpsAgent = new https.Agent({ rejectUnauthorized: false });
}

生产环境标准方案

  • 服务端必须使用公共CA机构颁发的正规HTTPS证书,禁止使用自签证书
  • 确认请求地址的域名/IP和证书绑定的域名/IP完全一致,不存在域名不匹配问题
  • 确认服务端配置的证书链完整,没有缺少中间证书

注意:安卓模拟器访问宿主机本地服务必须用10.0.2.2替代localhost,否则也会触发网络错误

内容的提问来源于stack exchange,提问作者kubra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:18:03