React Native切换HTTPS后API调用报[AxiosError: Network Error]求助
React Native Android端HTTPS网络错误解决方案
问题本质:Android系统默认不信任自签名证书或绑定IP地址的HTTPS证书,而Postman、浏览器会宽松处理这类证书校验,React Native依赖的Android原生网络框架(OkHttp)会严格执行证书合法性校验,这就是你遇到网络错误的核心原因。
针对你的场景,确实需要处理证书相关配置,提供两种可行方案:
- 导入证书到Android应用(推荐,适用于开发和生产)
- 将Node.js服务器的HTTPS证书(.cer/.pem格式)复制到
android/app/src/main/res/raw目录(无此目录则手动创建) - 配置OkHttp客户端信任该证书:可以通过原生代码自定义OkHttpClient,或使用
react-native-ssl-pinning这类第三方库简化流程,只需在配置中指定证书文件名或哈希值即可完成绑定。
- 将Node.js服务器的HTTPS证书(.cer/.pem格式)复制到
- 调试阶段临时跳过证书校验(仅开发环境使用,禁止上线)
- 修改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中 } - 注意:此方法完全关闭证书校验,存在严重安全隐患,仅用于本地开发调试。
- 修改Android项目
- 导入证书到Android应用(推荐,适用于开发和生产)
额外建议:如果条件允许,尽量使用域名而非IP地址访问API,同时使用权威CA颁发的证书(如Let's Encrypt),这类证书会被Android系统默认信任,无需额外配置。
内容的提问来源于stack exchange,提问作者davion williams
相关产品推荐
相关产品推荐

