React Native安卓应用无法通过HTTPS运行AXIOS GET请求求助
React Native安卓网络请求异常排查方案
问题复盘
使用Axios发起HTTPS请求时返回ERR_NETWORK,服务器未收到请求;请求https://google.com返回ERR_CANCELLED;设备浏览器可正常访问目标端点,调试/发布版APK均失效,Fetch也存在相同问题。
排查与解决方案
1. 确认Android网络权限
检查AndroidManifest.xml是否添加必要权限,缺失会直接阻断网络请求:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2. 排查AbortSignal超时逻辑
当前超时设置可能触发过早,导致请求未发出就被取消:
- 临时移除
signal参数,直接发起请求,验证是否能成功; - 将超时时间调整至10000ms(10秒),避免网络延迟导致误中止。
3. 校验URL处理逻辑
确认this.url()方法未对原URL做错误拼接(如额外路径、转义错误),直接使用完整URL测试:
const response = await axios({ method: 'get', url: 'https://my-domain:5000/api/v1/version', // 暂时注释signal,先验证请求基础连通性 // signal: this.newAbortSignal(5000), })
4. 检查Android网络安全配置(Android 10+)
若设备为Android 10及以上,检查res/xml/network_security_config.xml是否限制了HTTPS请求:
- 确保配置允许目标域名访问,或默认信任系统CA:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="false"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
- 若使用自定义CA(即使是受信任机构颁发但设备未预装的证书),需在配置中添加对应证书条目。
5. 调试网络状态与请求细节
- 用
NetInfo检查设备网络连通性:
import NetInfo from "@react-native-community/netinfo"; const checkNetwork = async () => { const state = await NetInfo.fetch(); console.log('网络状态:', state.isConnected, state.type); };
- 开启Axios日志拦截器,查看请求发送的完整细节:
axios.interceptors.request.use(request => { console.log('待发送请求:', request); return request; }); axios.interceptors.response.use( response => response, error => { console.log('错误详情:', error.message, error.code, error.config); return Promise.reject(error); } );
6. 发布版APK打包配置检查
- 确认ProGuard未混淆网络请求相关代码,在
proguard-rules.pro添加规则:
-keep class com.facebook.react.modules.network.** { *; } -keep class okhttp3.** { *; } -keep class okio.** { *; }
- 验证签名APK的
AndroidManifest.xml中网络权限未被移除。
内容的提问来源于stack exchange,提问作者Dani Tseitlin
相关产品推荐
相关产品推荐

