当前位置: 首页 > news >正文

HarmonyOS---权限和http/Axios网络请求

网络请求(http,axios)

目录

  • 一、应用权限管理
    • 1.1权限的等级
    • 1.2授权方式
    • 1.3声明权限的配置
    • 1.4如何向用户进行申请
  • 二、内置http请求使用
  • 三、Axios请求使用(建议)
    • 3.1 使用方式一
    • 3.2 使用方式二(建议)


一、应用权限管理

应用权限保护的对象分数据和功能的:

  • 数据:个人(照片,通讯录,日历,位置)、设备(标识码,相机,麦克风)

  • 功能:设备(摄像头/麦克风、电话、联网)、应用(悬浮窗、快捷方式、唤起第三方应用、后台运行)

1.1权限的等级

system_core: 该等级提供应用服务操作系统的 - 核心能力
system_basic:该等级提供应用服务的 - 基础服务
normal: 普通的基本应用:默认

1.2授权方式

system_grant:系统授权
指的是系统类型的权限,应用被允许访问的数据不会涉及到用户或设备的敏感信息
安装应用是,应用会询问系统,系统会自动进行授权。
user_grant:用户授权
指的是涉及用户隐私或敏感数据的,如果出现问题,是不可控的。
应用安装后,运行时,会指定弹窗,询问用户是否允许获取权限。

授权申请

1.3声明权限的配置

entry/src/main/module.json5 配置文件中,声明权限:

例:当不需要用户确认和用户确认运行都需要在requestPermissions[]中进行配置:1. 不需要用户确认:{"name": "ohos.permission.INTERNET"  //权限名称:网络},
2. 用户确认 (当需要用户确认时,填写配置信息会有提示,不填则报错)
例:在卡片Call机制中也用到了,保持后台应用:
格式:{"name": "ohos.permission.LOCATION", //定位"reason": "$string:reason_loc",      //描述申请的原因:user_grant时,必填项,因为需要国际化需要在语言文件中设置才可以"usedScene": {                       //描述权限使用的场景:user_grant时,必填项"abilities": [ "EntryAbility" ],   //标识需要使用该权限的 Ability"when": "always"                   //标识使用的时机:inuse:只允许前台, always:前后台都允许}

1.4如何向用户进行申请

:定位
import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; //权限控制管理onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {//唤醒用户授权窗口,只有在user_grant情况下有效try{//创建一个权限管理对象const manager = abilityAccessCtrl.createAtManager()//基于管理对象,申请用户授权manager.requestPermissionsFromUser( this.context, ["ohos.permission.LOCATION","ohos.permission.APPROXIMATELY_LOCATION",...] )}catch(err){promptAction.showToast({message:'获取位置失败!'})}hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');}

扩展:请求方式
GET:
短文本请求,是一种不安全的请求,所有的信息都暴露在地址栏中。
内容的上限是255个字节。
通常都是直接打开网址、超链接a它们使用。
POST:
长文本请求,是一种安全的请求,基于http超文本传输协议的。
数据信息是通过TCP/IP请求协议进行处理的,用户不可见。
数据上限:2MB
如今,我们有一个RestFul请求风格定义,它扩展了更多的请求方式:并不是所有后端服务器都支持

PUT:本质还是post请求。DELETE:本质还是get请求。

二、内置http请求使用

可能会存在个版本不兼容问题:建议使用Axios

在这里插入图片描述

1.开启网络权限: 'ohos.permission.INTERNET'
2.导包: import http from '@ohos.net.http'
3.请求://创建网络请求对象const httpRequest:http.HttpRequest = http.createHttp()// 方式一:异步//异步方法:data就是响应回发的结果//httpRequest.request('url', {...}, (err,data)=>{})// 方式二: 同步//转同步操作try{const res:http.HttpResponse = await httpRequest.request('https://jsonplaceholder.typicode.com/users',{method: http.RequestMethod.GET}   //get请求方式:默认)//处理请求结果:得到一个json对象console.info('http===', res.responseCode)           //状态码console.info('http===', JSON.stringify(res.header)) //头部信息console.info('http===', JSON.stringify(res.result)) //数据结果}catch(err){console.info('http===', err)}finally{//不管成功还是失败,最终,始终关闭请求对象httpRequest.destroy()}
封装工具包格式:// 内置http
import http from '@ohos.net.http'
import promptAction from '@ohos.promptAction'export default class HttpUtils {// 青云客:(第三方)private static readonly path: string = 'http://api.qingyunke.com'// 美团:(个人)// https://atstudy-1253850831.cos.ap-shanghai.mygcloud.comstatic async httpRequest(url: string, method: http.RequestMethod = http.RequestMethod.GET,extraData: string | Object | ArrayBuffer = ''): Promise<http.HttpResponse> {const link = http.createHttp()let res: http.HttpResponse = {} as http.HttpResponsetry {res = await link.request(HttpUtils.path + url, {method: method, extraData: extraData})} catch (err) {promptAction.showToast({message: '网络请求异常' + JSON.stringify(err)})} finally {//不管成功还是失败,最终,始终关闭请求对象link.destroy()}return res//处理请求结果:得到一个json对象// console.info('http===', res.responseCode)           //状态码// console.info('http===', JSON.stringify(res.header)) //头部信息// console.info('http===', JSON.stringify(res.result)) //数据结果}
}

三、Axios请求使用(建议)

使用Axios需要安装ohpm中的 axios依赖或者在oh-package.json5 加入依赖
方式一:根据命令安装:ohpm install @ohos/axios
方式二:“@ohos/axios”:“^2.2.0”

3.1 使用方式一

直接调用get(),post(), 不建议使用,原因路径每次都是完整的,有重复性

:
开启网络权限: 'ohos.permission.INTERNET'
导包: import axios  from '@ohos/axios'
axios.get('url',{params:{}})
axios.post('url')

3.2 使用方式二(建议)

定义出来公用部分,若不相同可以在调用时进行覆盖

:
开启网络权限: 'ohos.permission.INTERNET'
导包: import axios  from '@ohos/axios'
// 1.公共部分const cont =  axios.create({baseURL:'https://atstudy-1253850831.cos.ap-shanghai.myqcloud.com', // 公用部分的url//transformRequest:()=>{}, // 发送请求前的操作函数 // 知道别用出错有点难找//transformResponse:()=>{}, // 接收结果  // 知道别用出错有点难找timeout:3*1000, // 请求超时时间headers:{} // 头部数据})// 格式: 2.调用 cont.get() /  cont.post()// 此处使用的异步,也可以转为async同步cont.get('/lab-d3/harmonyOS/meituan/shop.json',{timeout:6*1000} // 重写超时时间).then((res: AxiosResponse) => {if (res.status == 200) { // 状态码res.data // 返回数据}}).catch((err: BusinessError) => {promptAction.showToast({ message: "get请求异常"})}).finally(() => {  })
Axios工具包:
当需要多个url时则就需要发生变更了,使用构造传参方式就可以
import axios, { AxiosInstance } from '@ohos/axios'
export default class AxiosUtils {// 青云客:(第三方)private static readonly path: string = 'http://api.qingyunke.com'private static  link(): AxiosInstance {return axios.create({baseURL: AxiosUtils.path,timeout:3*1000, // 请求超时时间headers:{}, // 头部数据timeoutErrorMessage: '连接超时'})}public static get(url: string,params:string='' ) {return AxiosUtils.link().get(url+'?'+params)}public static post(url: string,data:ResourceStr|object='' ) {return AxiosUtils.link().post(url,data)}
}

相关文章:

HarmonyOS---权限和http/Axios网络请求

网络请求(http,axios) 目录 一、应用权限管理1.1权限的等级1.2授权方式1.3声明权限的配置1.4如何向用户进行申请 二、内置http请求使用三、Axios请求使用&#xff08;建议&#xff09;3.1 使用方式一3.2 使用方式二&#xff08;建议&#xff09; 一、应用权限管理 应用权限保护…...

信号量SEM

前提 1.信号量的本质是一把计数器 2.申请信号本质就是预订资源 3.PV操作是原子的! 将一个公共资源当做整体访问-->锁 如果公共资源不当做整体使用&#xff0c;多进程可以并发的访问公共资源&#xff0c;但不是同一个区域&#xff0c;为了将资源均分&#xff0c;所以有了…...

828华为云征文 | 基于华为云Flexus云服务器X搭建部署——AI知识库问答系统(使用1panel面板安装)

&#x1f680;对于企业来讲为什么需要华为云Flexus X来搭建自己的知识库问答系统&#xff1f;&#xff1f;&#xff1f; 【重塑知识边界&#xff0c;华为云Flexus云服务器X引领开源问答新纪元&#xff01;】 &#x1f31f; 解锁知识新动力&#xff0c;华为云Flexus云服务器X携…...

从零预训练一个tiny-llama#Datawhale组队学习Task2

完整的教程请参考&#xff1a;datawhalechina/tiny-universe: 《大模型白盒子构建指南》&#xff1a;一个全手搓的Tiny-Universe (github.com) 这是Task2的学习任务 目录 Qwen-blog Tokenizer&#xff08;分词器&#xff09; Embedding&#xff08;嵌入&#xff09; RMS …...

【Linux探索学习】第二弹——Linux的基础指令(中)——夯实基础第二篇

Linux基础指令&#xff08;上&#xff09;&#xff1a;【Linux探索学习】第一弹——Linux的基本指令&#xff08;上&#xff09;——开启Linux学习第一篇-CSDN博客 前言&#xff1a; 在前面我们已经讲解了一些常用的Linux的基础指令&#xff0c;那些当然是远远不够的&#xff…...

Python和QT哪个更适合嵌入式方向的上位机开发?

最近因为工作需要&#xff0c;需要做一个上位机用来处理收集到的数据&#xff0c;然后进行分析&#xff0c;最好有图标输出&#xff0c;当然还要考虑开发便捷&#xff0c;毕竟平时主要是嵌入式方向开发&#xff0c;核心技术栈主要是Linux和C语言&#xff0c;对于开始上位机并不…...

Unity实战案例全解析:RTS游戏的框选和阵型功能(5)阵型功能 优化

前篇&#xff1a;Unity实战案例全解析&#xff1a;RTS游戏的框选和阵型功能&#xff08;4&#xff09;阵型功能-CSDN博客 本案例来源于unity唐老狮&#xff0c;有兴趣的小伙伴可以去泰克在线观看该课程 我只是对重要功能进行分析和做出笔记分享&#xff0c;并未无师自通&#x…...

Android compose 的基本环境搭建

1.创建项目 导入版本 1.gradle/libs.versions.toml [versions] accompanistPermissions "0.36.0" agp "8.5.0-beta01" coilCompose "2.7.0" constraintlayoutComposeVersion "1.0.1" hiltAndroid "2.51.1" hiltNavi…...

git | 合并 commit 的两种方法

比如你最近的 3 次提交分别为 A B C&#xff0c;你想将它们合并成 X。 方案一 使用 git rebase -i HEAD~3 进入编辑: pick 0148079 A pick 29cae72 B pick bf8572a C修改&#xff1a; r 0148079 A f 29cae72 B f bf8572a C:wq 保存进入 commit 编辑页面&#xff0c;输入 X …...

Grafana链接iframe嵌入Web前端一直跳登录页面的问题记录

概述 公司有个项目使用到Grafana作为监控界面,因为项目方的环境极其复杂,仅物理隔离的环境就有三四个,而且每个都得部署项目,今天在某个环境测试,查看界面遇到一个比较奇怪的Grafana问题,后面针对该问题进行跟踪分析并解决,故而博文记录,用于备忘。 问题 登录项目We…...

后端Java-SpringBoot整合MyBatisPlus步骤(超详细)

1.新建项目。 2.点击完上一步的next之后&#xff0c;选择pom.xml文件中的依赖。 3.点击pom文件进行项目初始化。 按照下面的俩步骤刷新一下maven &#xff0c;让文件生效 4.新建一个application.yml文件 5. 新建一个数据库mp&#xff0c;在数据库中新建一张user表 6.连接数据…...

8609 哈夫曼树

### 思路 1. **选择最小权值节点**&#xff1a;在哈夫曼树构建过程中&#xff0c;选择两个权值最小且父节点为0的节点。 2. **构建哈夫曼树**&#xff1a;根据权值构建哈夫曼树&#xff0c;确保左子树权值小于右子树权值。 3. **生成哈夫曼编码**&#xff1a;从叶子节点到根节点…...

docker的harbor仓库登录问题

目录 一、问题描述 二、证书信任问题 三、DNS解析问题 四、解决 参考链接&#xff1a;Docker login Harbor报错解决&#xff1a;Error response from daemon: Get https:..-阿里云开发者社区 一、问题描述 问题&#xff1a; 挂机或者挂机重启之后harbor登录不上 查看日…...

ENV | docker 安装使用(简单实操版)

1. 详细步骤 1.1 安装 sudo apt update sudo apt install docker.io1.2 验证&#xff08;可跳过&#xff09; docker -v1.3 使用 1.3.1 拉取镜像 # 镜像源&#xff0c;如使用腾讯云服务器&#xff0c;可使用 https://mirror.ccs.tencentyun.com docker pull xxx1.3.2 运行…...

【Golang】深入解读Go语言中的错误(error)与异常(panic)

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

DMDSC更换DCR和VOTE磁盘

DMDSC更换DCR和VOTE磁盘 为了提高DMDSC集群运行速度和节点之间通信协调的效率&#xff0c;需要将运行在机械盘上的dcr和vote磁盘替换到SSD高效磁盘上。将原来200M的dcr和vote机械磁盘&#xff0c;换成500M的SSD高效磁盘。 磁盘替换规划信息如下所示&#xff1a; 信息说明 替…...

国产化框架PaddleYOLO结合Swanlab进行作物检测

1. 项目介绍 粮食安全&#xff0c;作为人类生存与发展的基石&#xff0c;始终是全球关注的焦点。它不仅仅关乎粮食的充足供应&#xff0c;更涉及粮食的质量安全、营养健康以及可持续生产等多个维度。在全球化、气候变化和资源环境约束日益加剧的背景下&#xff0c;如何确保粮食…...

Linux编译部署PHP环境

1.准备工作 安装前我们需要设置防护墙&#xff0c;开放端口&#xff0c;更新yum源 # 1.防火墙 systemctl status firewalld 看到active(running)就意味着防火墙打开了 systemctl stop firewalld 看到inactive(dead)就意味着防火墙关闭了 systemctl start fire…...

Win11禁止搜索栏查找互联网内容

禁止任务栏和开始菜单的搜索栏查找互联网内容的方法如下&#xff1a; 使用组策略&#xff1a;WinR键&#xff0c;或菜单框&#xff0c;输入gpedit.msc回车&#xff0c;启动本地组策略编辑器。使用左侧的边栏导航到“计算机配置”>“管理模板”>“Windows组件”>“搜索…...

dig和nmap的区别

dig和nmap是两种在网络管理和安全领域广泛使用的工具&#xff0c;它们在功能、用途和原理上存在显著差异。 dig 定义与功能&#xff1a; dig&#xff08;Domain Information Groper&#xff09;是一个用于查询DNS&#xff08;域名系统&#xff09;信息的命令行工具。它允许用…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...

高防服务器价格高原因分析

高防服务器的价格较高&#xff0c;主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因&#xff1a; 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器&#xff0c;因此…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...