在虚拟机中为什么同一个网络请求代码在鸿蒙 API 15 环境下能正常使用,但切换到 API 21 环境后就出现了「Permission Denied」权限拒绝错误
314
两个不同版本的·项目均以添加网络权限并且在真机中与模拟器效果一样
这个是官方的web跳转示例在api21的模拟器以及项目下无法正常运行
import { webview } from '@kit.ArkWeb';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
build() {
Column() {
Button('跳转新页面')
.onClick(() => {
try {
this.controller.loadUrl('www.example1.com'); // 动态加载新URL
} catch (error) {
console.error(`Error: ${error.message}`);
}
})
Web({ src: 'www.example.com', controller: this.controller }) // 初始加载页面
}
}
}
这是同一份代码以下是API21的运行结果

这个是API15的运行效果
在使用文档中的示例代码的效果如下:
API21,在运行时会报错误 Request err: {"code":201,"data":"Permission Denied"}
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit';
// 1、定义请求URL,此处只给出示例,还请根据实际情况将其替换为需要请求的URL
const getURL = "https://v2.xxapi.cn/api/historypic";
export function getData(){
try {
// 2、创建session
const session = rcp.createSession();
// 3、使用session.get发起请求,以getURL为入参,使用Promise进行异步回调。
session.get(getURL).then((response) => {
console.info(`Response succeeded: ${response}`);
}).catch((err: BusinessError) => {
// 4、错误处理,通过catch块,捕获error,并对error进行处理,本示例中会将错误信息展现到打印台上。
console.error(`Response err: Code is ${JSON.stringify(err.code)}, message is ${JSON.stringify(err)}`);
});
}catch (err) {
console.error(`Request err: ${JSON.stringify(err)}`);
}
}
在api15则可以正常使用
请各位大佬帮我解答一下谢谢了!
5
浏览98 编辑于2026-01-08 04:23河南
全部评论
最多点赞
最新发布
最早发布
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
- 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
- 如您发布的内容为转载内容,请注明内容来源。
我要提问题
了解社区公约,与您携手共创和谐专业的开发者社区。













苏公安网备 32011402010933号