【Harmony OS - 网络请求】

在一个应用开发中,网络请求是必不可少的,我们一般用的fetch、axios来进行http请求,在鸿蒙中也可以通过createHppt来发生一个http请求,它们都是异步请求返回的Promise,下面我们将介绍’@ohos.net.http’和axios这两种方式来进行网络请求。

@ohos.net.http

这是鸿蒙系统内置的一个网络请求工具,通过导入http来发送网络请求,有三个步骤:

  1. 申请网络权限
    使用之前需要在module.json5配置文件中申请网络权限
"requestPermissions"  : [{"name": 'ohos.permission.INTERNET'}],
  1. 导入http模块
import http from '@ohos.net.http';   
  1. 创建一个HTTP请求
    PS:每一个httpRequest对应一个HTTP请求任务,不可复用
let httpRequest = http.createHttp(); // 里面包括发起请求、中断请求、订阅/取消订阅HTTP Response Header事件。
request:发送请求request(url: string, options? : HttpRequestOptions): Promise
destroy:中断请求destroy(): void
on(‘headersReceive’):订阅HTTP Response Header 事件on(type: ‘headersReceive’, callback: Callback): void
off(‘headersReceive’):取消订阅HTTP Response Header 事件off(type: ‘headersReceive’, callback?: Callback): void

HttpRequestOptions结构:
在这里插入图片描述
HttpResponse:返回的数据result默认是string类型,需要通过JSON.parse转成对象
在这里插入图片描述
完整的发生一个网络请求如下:更详细的可以查看官网:@ohos.net.http网络请求

// 引入包名
import http from '@ohos.net.http';              // 每一个httpRequest对应一个HTTP请求任务,不可复用
let httpRequest = http.createHttp();
// 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
// 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) => {console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定"EXAMPLE_URL",{method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET// 开发者根据自身业务需要添加header字段header: {'Content-Type': 'application/json'},// 当使用POST请求时此字段用于传递内容extraData: {"data": "data to send",},expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型usingCache: true, // 可选,默认为truepriority: 1, // 可选,默认为1connectTimeout: 60000, // 可选,默认为60000msreadTimeout: 60000, // 可选,默认为60000msusingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定}, (err, data) => {if (!err) {// data.result为HTTP响应内容,可根据业务需要进行解析console.info('Result:' + JSON.stringify(data.result));console.info('code:' + JSON.stringify(data.responseCode));// data.header为HTTP响应头,可根据业务需要进行解析console.info('header:' + JSON.stringify(data.header));console.info('cookies:' + JSON.stringify(data.cookies)); // 8+// 取消订阅HTTP响应头事件httpRequest.off('headersReceive');// 当该请求使用完毕时,调用destroy方法主动销毁httpRequest.destroy();} else {console.info('error:' + JSON.stringify(err));// 取消订阅HTTP响应头事件httpRequest.off('headersReceive');// 当该请求使用完毕时,调用destroy方法主动销毁。httpRequest.destroy();}}
);

Axios请求

axios进行请求想必我们已经很熟悉了,这里就简单说一下在鸿蒙中是如何使用的,主要有三步:

  1. 安装ohpm
    ohpm全称为open harmony package management鸿蒙包管理工具,主要是对第三方包进行管理,在鸿蒙中也是通过ohpm来安装其他第三方包,可以粗暴理解为npm。细节可查看官网:ohpm使用指导
  • 下载ohpm工具包,点击链接获取。
  • 解压并配置环境变量
    以MacOS为例:
    1、进入“ohpm/bin”目录,打开命令行工具,执行如下指令初始化ohpm: bash ./init
    2、配置环境变量, 输入ohpm -v显示版本就说明配置好了,
export OHPM_HOME=/home/xx/Downloads/ohpm  #本处路径请替换为ohpm的安装路径
export PATH=${OHPM_HOME}/bin:${PATH}
  1. 安装axios
    利用ohpm来安装axios
    可以在OpenHarmony三方库中心仓中查看当前鸿蒙支持的所有第三方包
ohpm install @ohos/asiox
  1. 使用axios,返回的data就是对象不需要再通过JSON.parse转,详细API使用可查看@ohos.axios
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学而时习之---状态模式

在软件系统中,有些对象也像水一样具有多种状态, 这些状态在某些情况下能够相互转换, 而且对象在不同的状态下具有不同的行为。 为了更好地对这些具有多种状态的对象进行设计。 使用一种被称为状态模式的设计模式。 状态模式用于解决系统中复…

[DevOps-05] Jenkins实现CI/CD操作

一、简要说明 基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成 基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 二、准备Springboot工程 1、IDEA新建工程 2、填写项目工程信息 3、选择Springboot版本…

不要盲目自学网络安全!学习顺序特别重要!

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防…

中国植被分区数据,shp数据,2000年,字段包含区域代码、名称、地带代码及名称,附高清图可视化

数据名称: 中国植被分区数据 数据格式: Shp 数据时间: 2000年 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1zbqydm植被区域代码2zbqymc植被区域名称3zbdddm植被地带代码4zbddmc植被地带名称 …

接口和抽象类有什么共同点和区别?

共同点: 都不能被实例化。都可以包含抽象方法。都可以有默认实现的方法(Java 8 可以用 default 关键字在接口中定义默认方法)。 区别: 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类…

Vue中的选项式 API 和组合式 API,两者有什么区别

Vue中的选项式 API(Option API)和组合式 API(Composition API)是两种不同的组件编写方式,它们各有特点和适用场景: 选项式 API(Option API): 传统方法:Vue最初的编程范式…

天洑智能设计全系列产品完成银河麒麟操作系统适配!

近日,天洑软件智能设计全系列产品(智能热流体仿真软件AICFD、智能结构仿真软件AIFEM、智能优化软件AIPOD、智能数据建模软件DTEmpower)已成功完成银河麒麟桌面操作系统V10的适配工作。双方产品完全兼容,运行稳定、安全可靠、性能优…

freeRTOS——事件标志组知识总结及实战

1事件标志组概念 事件标志组:是一组事件标志位的集合, 可以简单的理解事件标志组,就是一个整数。 其特点: 1)它的每一个位表示一个事件(高8位不算) 2)每一位事件的含义,…

创建企业邮箱帐户指南:常见问题与解决方法分享

专业的电子邮件地址可以帮助客户识别商务人士,并了解公司给他们发邮件的目的。如果你从事管理、信息技术或人力资源工作,你可能会负责为一个企业建立一个企业邮箱帐户。了解如何为新员工和现有员工设置电子邮件帐户可以帮助您简化公司内部的沟通。 在这篇…

关于户口本等户籍材料翻译

户籍材料,作为证明公民户籍与身份的关键文件,在每个实施户籍制度的国家中均不可或缺。它们不仅是登记、变更或注销户籍的依据,更是多种生活场景中不可或缺的证明。举例来说,一个在国外出生的孩子若想在中国落户,就必须…

LN和BN

假设batch为2,(2,3,256,256)这样的样本 LN比较直观就是在每个独立的样本上计算均值和方差,然后归一化。(2,3,256,256) 归一化是将数…

小H靶场笔记:DC-4

DC-4 January 4, 2024 2:37 PM Tags: teehee提权 Owner:只惠摸鱼 信息收集 探测靶机ip,发现应该是192.168.199.134 扫一下开放端口(22、80)、服务、版本、漏洞 根据扫描结果,在80端口可能有CSRF漏洞,…

石头剪刀布游戏 - 华为OD统一考试

OD统一考试 分值: 100分 题解: Java / Python / C++ 题目描述 石头剪刀布游戏有 3 种出拳形状: 石头、剪刀、布。分别用字母 A,B,C 表示游戏规则: 出拳形状之间的胜负规则如下: A>B; B>C; C>A; 左边一个字母,表示相对优势形状。右边一个字母,表示相对劣势形状。…

【SpringBoot系列】springboot中拦截器Interceptor使用

🤵‍♂️ 个人主页:@香菜的个人主页,加 ischongxin ,备注csdn ✍🏻作者简介:csdn 认证博客专家,游戏开发领域优质创作者,华为云享专家,2021年度华为云年度十佳博主 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收…

企语iFair 协同管理系统 任意文件读取漏洞复现(CVE-2023-47473)

0x01 产品简介 企语iFair协同管理系统是一款专业的协同办公软件,该管理系统兼容性强,适合多种企业类型。该软件永久免费,绿色安全,无需收取费用即可使用所有功能。企语iFair协同管理系统同时兼容了Linux、Windows两种操作系统 0x02 漏洞概述 企语iFair协同管理系统getup…

AE (4)_ 直方图调整的理论

#灵感# 在短暂的高通平台调试中,很看重直方图调整的理解。后来其它平台,不怎么调整这个了。但还是记录一下。 我个人还是倾向 招式简单,但应用到极致。 绝大部分内容来自:刘斯宁,Image Enhancement - CLAHE - 知乎 (z…

Mybatis源码基本原理--XML版

文章目录 mybatis是什么架构设计首先建立起Mapper的代理工程和代理映射器的注册和使用XML文件解析数据源解析、创建和使用SQL执行器(Executor)的定义与实现SQL解析参数处理器:策略模式实现封装处理结果注解 mybatis 是什么 MyBatis 是一款优…

SecOC中新鲜度值和MAC都按照完整的值来生成,但是在发送和认证的时候只会截取一部分。这边截取的部分一般取多长?由什么参数设定?

新鲜度值(Freshness Value, FV)和消息验证码(Message Authentication Code, MAC)是SecOC协议中用于保证数据的真实性和新鲜度的重要信息。它们的长度取决于不同的因素,如加密算法、安全级别、通信带宽等。 一般来说,FV和MAC的长度越长,安全性越高,但也会占用更多的通信…

IDEA 每次新建工程都要重新配置 Maven的解决方案

文章目录 IDEA 每次新建工程都要重新配置 Maven 解决方案一、选择 File -> New Projects Setup -> Settingsfor New Projects…二、选择 Build,Execution,Deployment -> Build Tools -> Maven IDEA 每次新建工程都要重新配置 Maven 解决方案 DEA 每次新建工程都要…

用大模型读取你的想法,并转化成文本!恐怖的DeWave模型

悉尼科技大学的科研人员,通过大语言模型、EEG(大脑活动检测工具)、脑机接口等技术,开发了一个可自动读取人类想法,并转化成文本的AI大模型——DeWave。 DeWave的使用方法非常简单,用户只需要戴上EEG&#…