问题现象
模拟器在运行应用时出现网络请求失败,具体表现包括但不限于:
- 场景一:DNS解析失败:请求报错 AxiosError: {"code":2300006,"message":"Couldn't resolve host name"}。
- 场景二:本地服务访问失败:应用请求本地电脑(宿主机)搭建的后端接口时无响应,使用 127.0.0.1 或 localhost 无法连接。
- 场景三:HTTPS请求受限:访问未配置证书的远程服务器或自签名服务器时请求被拦截,而浏览器访问正常;或通过内网穿透工具访问正常,直接访问IP异常。
- 场景四:网络环境受限:内网环境可访问,切换外网后无法访问;或公司内网环境下无法连接网络。
背景知识
- 模拟器访问网络:模拟器可以通过本地计算机的网络直接访问互联网。模拟器访问网络实际上利用的是本地计算机的以太网或者WLAN,与本地计算机共享同一网络资源。
问题定位
根据不同的报错场景,建议按以下维度进行排查:
分析结论
- 场景一:DNS配置不当直接导致域名解析失败。
- 场景二:由于模拟器是独立环境,访问宿主机服务必须使用宿主机的真实局域网IP地址(如 192.168.x.x),而非回环地址。
- 场景三:高版本系统强制HTTPS是导致HTTP请求失败或自签名证书报错的根本原因。内网穿透工具之所以能成功,往往是因为其自动提供了HTTPS隧道或预置了证书兼容处理。
- 场景四:在复杂的网络环境下(如使用VPN),必须显式配置代理,否则流量无法正确路由。
常见FAQ
Q:模拟器无法通过 localhost 访问宿主机后端服务怎么办?
A:模拟器上的 localhost 代表模拟器本身而非宿主机。请使用宿主机的局域网IP地址进行访问,参考 模拟器访问本机网络。
Q:为什么模拟器的网络显示为以太网?
A:模拟器访问网络利用的是本地计算机的以太网或WLAN,与本地计算机共享同一网络资源。显示为以太网是正常的共享网络表现。
Q:为什么内网穿透可以访问,直接部署到服务器却报错?
A:内网穿透工具通常会自动启用HTTPS加密隧道或预置证书,从而规避了HTTP明文传输限制或证书校验问题。直接部署服务器时,需确保服务器配置了HTTPS证书,或已在模拟器中安装了相应的自签名证书。