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

React Native中Fetch请求SSL API时Android端报Network request failed问题

嘿,我之前也踩过Android端调用SSL接口Fetch失败的坑,结合你给出的报错信息,给你几个实用的排查方向和解决办法:

排查与解决步骤

1. 先查SSL证书的合规性

Android对SSL证书的校验比iOS严格得多,这是最常见的原因:

  • 确认你的API服务器用的是正规CA颁发的证书,如果是测试环境的自签名证书,Android默认不会信任,必须手动配置
  • 检查证书链是否完整:有些服务器只部署了叶子证书,没包含中间证书,iOS可能会自动补全,但Android会直接判定证书无效

2. 配置Android网络安全策略(针对自签名/特殊证书场景)

如果是测试环境用了自签名证书,或者需要临时放宽SSL校验(生产环境不建议这么做),可以按以下步骤配置:

  1. 在Android项目的res/xml目录下创建network_security_config.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <!-- 替换成你的API域名,includeSubdomains=true表示包含子域名 -->
        <domain includeSubdomains="true">your-api-domain.com</domain>
        <!-- 如果是信任自签名证书,添加这段,把你的证书文件放在res/raw目录下 -->
        <trust-anchors>
            <certificates src="@raw/your_self_signed_cert"/>
        </trust-anchors>
    </domain-config>
</network-security-config>
  1. 在AndroidManifest.xml的application标签里添加引用:
<application
    ...
    android:networkSecurityConfig="@xml/network_security_config"
    ...>

3. 核对Fetch请求的参数细节

有时候iOS会自动处理一些请求细节,但Android不会:

  • 确认请求的Content-Type是否符合API要求,比如API需要application/json,一定要在headers里明确设置
  • 检查自定义headers有没有特殊字符或者Android不支持的格式,比如某些大小写敏感的header字段
  • 可以临时把Fetch换成axios或者原生XMLHttpRequest测试,排查是不是Fetch在Android上的兼容性问题

4. 检查Android系统版本的SSL支持差异

不同Android版本对SSL协议的支持不一样:

  • Android 7.0及以上默认不信任自签名证书,必须手动配置信任
  • 如果你的服务器只支持TLS 1.0/1.1,而测试设备是Android 10+,系统默认禁用了这些旧协议,会导致握手失败,需要服务器升级到TLS 1.2+

5. 抓包分析实际请求

用Charles或者Wireshark抓包,搞清楚到底哪里出问题:

  • 确认AndroidManifest.xml里已经添加了网络权限:<uses-permission android:name="android.permission.INTERNET"/>
  • 如果请求没到服务器,可能是本地网络或者Android的网络限制问题
  • 如果服务器返回了SSL握手错误,查看具体的错误码,比如证书不匹配、协议版本不兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:10:22