【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, // 可选,默认为true
        priority: 1, // 可选,默认为1
        connectTimeout: 60000, // 可选,默认为60000ms
        readTimeout: 60000, // 可选,默认为60000ms
        usingProtocol: 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
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JMeter 插件大全:详细介绍 Jmeter 常用插件

JMeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如 LoadRunner),在功能的全面性上就稍显不足。这篇博客,就…

特斯拉被比亚迪拉下神坛,马斯克难改命运岁月不如人

当这个消息浮现在我面前时,我几乎不敢相信眼前所见。比亚迪这个我曾无数次在文章中提及的中国车企,终于在2023年完成了伟大的历史任务——以销量突破特斯拉,站上全球电动车王座的宝座! 过去我们都习惯于从欧美日韩那里听说汽车的成…

k8s笔记1- 初步认识k8s

k8s简介: kubernetes,俗称k8是,用于自动部署,扩缩和管理容器化应用程序的开源系统,它将组成应用程序的容器,组合成逻辑单元,便于管理和服务发现。 k8s的作用 自动化上线和回滚、存储编排…

张驰咨询:ZENNER真兰标杆展示——2023年六西格玛DMAIC项目出色落下帷幕

告别了旧年,我们跨入了新的一年!ZENNER在23年初启动的DMAIC项目在2023年12月25日迎来了总结、收获成果的发布会。 ZENNER真兰集团中国区总裁杨燕明先生,张驰咨询公司的两位精益六西格玛黑带大师专家张驰老师和朱成朝老师,以及真诺…

云卷云舒:构建业务型电信智能运维方法

1 引言 智能运维(AIOps-Algorithmic IT Operations基于算法的IT运维)是人工智能技术在IT运维领域的运用,引用Gartner 的报告的一段话“未来几年,将近50%的企业将会在他们的业务和IT运维方面采用AIOps,远远高于今天的10…

java基础之java8新特性-默认方法

目录 1.默认方法 jdk8之前的接口 jdk8的接口 默认方法的用途 1.默认方法 jdk8之前的接口 在jdk8之前接口(interface)中可以定义变量和方法,变量必须是public,static,final的;方法必须是public&#xf…

腾讯云2024年优惠券领取入口及使用教程

腾讯云作为国内领先的云计算服务提供商,一直致力于为用户提供优质、高效、安全可靠的云计算服务。为了回馈广大用户,腾讯云会不定期地推出各种优惠活动,其中最受欢迎的就是优惠券活动。本文将详细介绍腾讯云优惠券的领取入口及使用教程。 一、…

19、BLIP-2

简介 github 通过利用预训练的视觉模型和语言模型来提升多模态效果和降低训练成本,预训练的视觉模型能够提供高质量的视觉表征,预训练的语言模型则提供了强大的语言生成能力。 实现过程 为了弥合模态差距,提出了一个分两个阶段预训练的 Qu…

秋招复习之数组与链表

目录 前言 1 数组 初始化数组: 访问元素 插入元素 删除元素 遍历数组: 查找元素 扩容数组: 数组的优点与局限性 2 链表 初始化链表 插入节点 删除节点 访问节点 查找节点 数组 vs. 链表 常见链表类型 3 列表 初始化列表 访问元素 插入与删…

6. Mybatis 缓存

6. Mybatis 缓存 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率MyBatis系统中默认定义了两级缓存 一级缓存二级缓存 默认情况下,只有一级缓存(SqlSession级别的缓存,也称为本地缓存&…

vuex基础用法 与 辅助函数使用

效果图 index.js文件 import Vue from "vue"; import Vuex from vuexVue.use(Vuex)export default new Vuex.Store({state: {shopsList: [{goodsName: "手机1", //商品名goodsAmount: 0, //购买的商品数量goodsPrice: 100, //单个商品价格totalPrice: 0,i…

14.用户管理

目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户: 1.使用CREATE USER语创建…

C#最佳工具集合:IDE、分析、自动化工具等

C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言。如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理。但是,这个工具列表可能会改变您编写C#代码的方式。 C#编程的…

找不到vcruntime140.dll怎么处理?6个修复教程分享

本文将详细介绍vcruntime140.dll文件的相关内容,并提供6个不同的修复教程,帮助大家解决这一问题。 一、vcruntime140.dll是什么文件? vcruntime140.dll是Visual C Redistributable Packages的一部分,它是Microsoft Visual Studi…

连续分配管理方式-第四十三天

目录 前言 单一连续分配 固定分区分配 分区大小相等 分区大小不等 分区说明表 动态分区分配 问题 用什么样的数据结构记录内存的使用情况 应该选择哪个分区进行分配 分区的分配与回收操作 分配 回收 结论 本节思维导图 前言 连续分配指为用户进程分配的必须是一…

条件随机场 (CRF) 的损失函数以及faiss 的原理介绍

1、条件随机场 (CRF) 的损失函数 条件随机场(CRF)是一种统计建模方法,常用于结构化预测问题,如序列标注、分词和命名实体识别等。在CRF模型中,损失函数用于衡量模型预测的标记序列与真实标记序列之间的差异。CRF的目标…

【Redux】自己动手实现redux和react-redux

1. React提供context的作用 在class组件的世界里,如果后代组件共享某些状态,比如主题色、语言键,则需要将这些状态提升到根组件,以props的方式从根组件向后代组件一层一层传递,这样则需要在每层写props.someData&#…

控制障碍函数(Control Barrier Function,CBF) 二、示例

二、示例 2.1、系统模型 这里我们举一个CBF作者给出的经典示例 我们定义控制输入 u u u 为蓝色车的推力。 p p p 为蓝色车的位置, v v v 为蓝色车的速度, z z z 为蓝色车与黄色车之间的距离, v 0 v_0 v0​ 为黄色车的速度。我们定义系统的…

功能介绍 | 探秘Goby功能世界:点击URL,即刻畅享快速调起之旅!

​​0x01 前言 ​我们从只会点鼠标的猴子到CtrlC,CtrlV来回切换的工具人,但有时候遇到大量需要复制的url界面,真的希望能有一个可以一键整理、一键扫描URL的功能来拯救! 好消息是,Goby从客户端版本2.8.6起,官方引入了…

CAN数据记录仪在新能源车上的应用

随着新能源汽车的快速发展,对车辆安全和性能的要求也越来越高。在新能源车中,液位传感器是必不可少的零部件之一,用于监测电池液位、冷却液位等关键参数。在测试阶段需要工作人员花费大量时间跟车去获取它的CAN数据,从而分析是否有…