最近发现很多新手同学刚接触鸿蒙时,都会遇到仿真器能上网,但应用里就是发不出请求的问题。

其实这个问题真的不复杂,90% 的情况都是下面 4 个原因导致的,按顺序排查一遍,基本都能解决,不用搞那些复杂的抓包、改系统配置。


第一步:加网络权限

这个是最常见的问题,鸿蒙应用默认没有联网权限,所有请求都会被系统直接拦截,连个报错都不会有。

解决方法: 打开 entry/src/main/module.json5 文件,在 module 节点里加上这段:

"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET"
  }
]

最重要的一步:加完权限后,必须先关闭仿真器,再重新运行应用,不然权限不会生效。


第二步:解决 HTTP 请求被拦截

从 HarmonyOS 4.0 开始,系统默认禁止所有 HTTP 明文请求,只允许 HTTPS。所以如果你用的是本地测试接口(比如 http://localhost:3000),会直接失败。

表现:访问百度等 HTTPS 网站正常,自己的 HTTP 接口报错。

解决方法: 还是在 module.json5module 节点里,加上安全配置:

"security": {
  "network": {
    "cleartextTrafficPermitted": true
  }
}

提示:生产环境一定要删掉这段,强制用 HTTPS。


第三步:本地后端别用localhost

很多人用电脑跑后端服务,然后在仿真器里写 http://localhost:3000 去访问,这里也会出现问题。

因为仿真器是一个独立的虚拟机,它的 localhost 指向的是自己,不是你的电脑。

解决方法: 把 localhost 换成 10.0.2.2,这是仿真器专门用来访问电脑主机的地址。

// 错误写法
const url = 'http://localhost:3000/api/user';

// 正确写法
const url = 'http://10.0.2.2:3000/api/user';

另外,确保你的后端服务是绑定在 0.0.0.0 上的,而不是 127.0.0.1,不然外部设备还是访问不了。


第四步:检查仿真器本身的网络

如果上面三步都做了还是不行,先确认仿真器真的能上网:

  1. 打开仿真器里的浏览器
  2. 输入 www.baidu.com 看能不能打开
  • 如果浏览器也打不开:重启仿真器,关掉电脑上的代理和 VPN,基本就能好
  • 如果浏览器能打开,只有你的应用不行:回到第一步重新检查权限和配置

快速验证流程

  1. 先在应用里请求 https://www.baidu.com → 成功:网络和权限没问题
  2. 再请求你的 HTTPS 线上接口 → 成功:证书没问题
  3. 最后请求本地 HTTP 接口 → 用 10.0.2.2 替换 localhost

避坑总结

  1. 加完权限一定要重启仿真器!
  2. 本地后端访问用 10.0.2.2,不是 localhost
  3. HTTP 请求需要加明文允许配置
  4. 先测浏览器能不能上网,排除仿真器本身的问题

这四点就能解决绝大多数仿真器网络问题。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐