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

React Native切换HTTPS后API调用报[AxiosError: Network Error]求助

React Native Android端HTTPS网络错误解决方案
  • 问题本质:Android系统默认不信任自签名证书或绑定IP地址的HTTPS证书,而Postman、浏览器会宽松处理这类证书校验,React Native依赖的Android原生网络框架(OkHttp)会严格执行证书合法性校验,这就是你遇到网络错误的核心原因。

  • 针对你的场景,确实需要处理证书相关配置,提供两种可行方案:

    1. 导入证书到Android应用(推荐,适用于开发和生产)
      • 将Node.js服务器的HTTPS证书(.cer/.pem格式)复制到android/app/src/main/res/raw目录(无此目录则手动创建)
      • 配置OkHttp客户端信任该证书:可以通过原生代码自定义OkHttpClient,或使用react-native-ssl-pinning这类第三方库简化流程,只需在配置中指定证书文件名或哈希值即可完成绑定。
    2. 调试阶段临时跳过证书校验(仅开发环境使用,禁止上线)
      • 修改Android项目android/app/src/main/java/com/[你的应用包名]/MainApplication.java,添加OkHttp拦截器跳过证书校验:
        import okhttp3.OkHttpClient;
        import java.security.cert.CertificateException;
        import javax.net.ssl.X509TrustManager;
        import javax.net.ssl.SSLContext;
        import java.security.SecureRandom;
        
        @Override
        public void onCreate() {
            super.onCreate();
            // 自定义OkHttp客户端,跳过证书校验
            OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
            try {
                final X509TrustManager trustAllCerts = new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {}
                    @Override
                    public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {}
                    @Override
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[]{}; }
                };
                final SSLContext sslContext = SSLContext.getInstance("SSL");
                sslContext.init(null, new javax.net.ssl.TrustManager[]{trustAllCerts}, new SecureRandom());
                final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
                clientBuilder.sslSocketFactory(sslSocketFactory, trustAllCerts);
                clientBuilder.hostnameVerifier((hostname, session) -> true);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            // 若使用Axios,需将此客户端配置到Axios的adapter中
        }
        
      • 注意:此方法完全关闭证书校验,存在严重安全隐患,仅用于本地开发调试。
  • 额外建议:如果条件允许,尽量使用域名而非IP地址访问API,同时使用权威CA颁发的证书(如Let's Encrypt),这类证书会被Android系统默认信任,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:52:38