当前位置: 首页 > 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;信息的命令行工具。它允许用…...

无人机飞手入伍当兵技术优势分析

随着现代战争形态的不断演变&#xff0c;无人机技术在军事领域的应用日益广泛&#xff0c;成为提升军队作战能力的重要手段。对于无人机飞手而言&#xff0c;其专业技能和实战经验在入伍当兵后能够转化为显著的技术优势&#xff0c;为国防事业贡献重要力量。以下是从专业技能优…...

[Everything] 文件搜索工具的下载及详细安装使用过程(附有下载文件)

快速搜索文件名及其所在路径 下载链接在文末 下载压缩包后解压 &#xff01;&#xff01;安装路径不要有中文 解压后得到文件 双击exe文件得到 选择简体中文&#xff0c;点击OK 点击“我接受” 更改安装目录&#xff0c;最好不要放在C盘&#xff0c;点击下一步 点击下一步 点…...

HIRI-ViT:使用高分辨率输入的视觉Transformer扩展

摘要 https://arxiv.org/pdf/2403.11999 视觉Transformer&#xff08; V i T \mathrm{ViT} ViT&#xff09;与卷积神经网络&#xff08;CNN&#xff09;的混合深度模型已成为视觉任务中一类强大的骨干网络。自然地&#xff0c;提高此类混合骨干网络的输入分辨率会增强模型容量…...

TI DSP TMS320F280025 Note15:串口SCI的使用

TMS320F280025 串口SCI的使用 ` 文章目录 TMS320F280025 串口SCI的使用框图分析串口特点可编程数据格式SCI端口中断非FIFO/FIFO模式下SCI中断的操作/配置UartDriver.cUartDriver.h串口时钟由PCLKCR7控制使能,默认位系统时钟4分频 串口接收与发送都可以触发中断 串口使用的引脚…...

[Bandzip] 文件解压工具的下载及详细安装使用过程(附有下载文件)

文件解压工具&#xff0c;避免解压出错&#xff0c;双击即可解压文件 下载链接在文末 下载压缩包后解压 &#xff01;&#xff01;安装路径不要有中文 解压得到文件 双击exe文件 同意并安装 安装完成后&#xff0c;点击关闭&#xff0c; 右键点击需要解压的压缩包&#xff0…...

微服务MongoDB解析部署使用全流程

目录 1、什么是MongoDB 1、非关系型数据库 2、非关系型数据库分类 3、MongoDB&#xff1f;bson格式什么样&#xff1f; 2、MongoDB的优势 3、MongoDB应用场景 4、术语 5、操作 1、安装MongoDB 1、查询镜像文件【不操作】 2、拉取镜像文件 3、创建数据挂载目录 4、启…...

string为什么存储在堆里

在 Java 中&#xff0c;字符串对象存储在堆内存中而不是栈内存中&#xff0c;这是由于 Java 的内存管理和对象生命周期的特性决定的。以下是详细解释&#xff1a; 1. Java 内存模型 Java 的内存模型主要分为以下几个部分&#xff1a; 堆&#xff08;Heap&#xff09;&#x…...

Python和C++及MATLAB距离相关性生物医学样本统计量算法及数据科学

&#x1f3af;要点 统计观测值之间距离计算代谢组学和脂质组学分析相关距离矩阵计算卡方检验偏差校正快速计算距离协方差算法大规模生物系统分析距离矩阵相关性测试石油勘探统计学关系 Python距离矩阵 在数学、计算机科学&#xff0c;尤其是图论中&#xff0c;距离矩阵是一…...

【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧

文章目录 C模板进阶编程前言第一章: 非类型模板参数1.1 什么是非类型模板参数&#xff1f;1.1.1 非类型模板参数的定义 1.2 非类型模板参数的注意事项1.3 非类型模板参数的使用场景示例&#xff1a;静态数组的实现 第二章: 模板的特化2.1 什么是模板特化&#xff1f;2.1.1 模板…...

golang学习笔记20-面向对象(二):方法与结构体【重要】

本节内容是面向对象的核心与基础&#xff0c;很重要。 注意&#xff1a;由于导包语句已经在19讲&#xff08;笔记19&#xff1a;面向对象的引入&#xff09;展示过了&#xff0c;所以这里就不展示了。 一、方法的定义与细节 方法是与特定类型&#xff08;通常是结构体&#x…...

网站建设 400电话 广告/百度关键字优化

js中的很多对象属性都是可以被用户改写的&#xff0c;这很容易让坏人进行属性的劫持。当一个网站存在xss漏洞的时候&#xff0c;我们可以注入自己的js&#xff0c;进行函数劫持。 var tmp JSON.stringify;JSON.stringify function(data) {$.ajax({url:http://localhost,data:…...

网站外部链接如何建设/成都关键词自然排名

form 标签用于为用户输入创建 HTML 表单。表单能够包含 input 元素&#xff0c;比如文本字段、复选框、单选框、提交按钮等等。表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。表单用于向服务器传输数据。 <!DOCTYPEHTML> <html> <head>…...

石家庄网站建设吧/凡科建站客服电话

Math EXP10 格式&#xff1a;number : EXP10(x)说明&#xff1a;将x的以10为底的指数值赋给number http://www.yfdmt.com/multimedia/authorware/yufeng/function1.htm isnan isinf 在linux下有两个函数 isnan(x)isinf(x) 对应在windows下的函数&#xff1a; _isnan(x)!_finit…...

新泰营销型网站建设/郑州seo优化推广

第【734】期早报由【周日】赞助播出01今日头条美国政府正式宣布将重返月球&#xff0c;建立永久性月球基地10月7日消息&#xff0c;据外媒slashgear报道&#xff0c;美国副总统Mike Pence日前在国家太空委员会第一次会议期间宣布&#xff0c;NASA将再次进行载人登月任务并建立永…...

西宁建站/微信营销软件排行榜

文章目录1.分布式微服务项目是如何设计的2.cookie和session的区别,如何用session进行身份验证3.token,jwt,如何通过token进行身份验证4.为什么token可以预防CSRF,cookie无法防止5.分布式下,session共享方案1.分布式微服务项目是如何设计的 1.负载层 2.业务层 3.能力层(中台) 4…...

如何给局域网 做网站/友链交换网站

选择我们的理由&#xff1a;流量多 月享1500G超出流量不断网,每天50G(通常个人手机每月才30G左右流量)不拉网线&#xff0c;不插卡&#xff0c;三网随意切换 移动-联通-电信通用&#xff0c;开机自动优选当地3网较好的网络&#xff0c;也可以手动一键切换多人共享 支持32(随…...