React Native安卓端使用Axios/Fetch请求HTTPS接口报Network Error问题咨询
问题解决方案
1. 修正请求头错误
你当前axios请求的头配置存在两处不符合规范的问题,安卓OkHttp对HTTP头校验比iOS严格,会直接拒绝非法请求:
- 头字段名错误:
ContentType需改为标准的Content-Type - 头值大小写错误:
application/JSON需改为小写的application/json
修正后的请求头代码:
headers: { 'Content-Type': 'application/json', Accept: 'application/json', }
2. 检查基础网络权限配置
确认android/app/src/main/AndroidManifest.xml中已添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
3. 修正自定义OkHttpClient的超时配置
你当前自定义OkHttp时将三个超时时间都设为0,部分OkHttp版本会将0判定为非法值直接触发超时错误,改为合理的超时时长即可:
OkHttpClient.Builder client = new OkHttpClient.Builder().connectionSpecs(specs) .connectTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) .cookieJar(new ReactCookieJarContainer());
4. 排查SSL证书问题
如果上述修改后仍报错,大概率是接口SSL证书存在安卓端不兼容问题:
- 优先确认接口证书链完整,可通过SSL检测工具校验,缺少中级证书的话需在服务端补全证书链
- 临时调试可添加信任所有证书的配置排查证书问题,该配置禁止用于生产环境
5. 输出完整错误信息定位问题
修改catch块的日志输出,获取更详细的错误信息:
catch (error) { console.log('错误信息:', error.message); console.log('错误响应:', error.response); console.log('请求实例:', error.request); }
- 如果
error.request存在但error.response不存在,说明请求已发出但未收到服务器响应,需排查服务器网络、防火墙配置 - 如果
error.response存在,说明服务器返回了非2xx状态码,按响应里的状态码排查业务逻辑问题
内容的提问来源于stack exchange,提问作者QrQr
相关产品推荐
相关产品推荐

