【鸿蒙 HarmonyOS 4.0】网络请求

一、介绍

资料来自官网:文档中心

网络管理模块主要提供以下功能:

  • HTTP数据请求:通过HTTP发起一个数据请求。
  • WebSocket连接:使用WebSocket建立服务器与客户端的双向连接。
  • Socket连接:通过Socket进行数据传输。

日常开发中HTTP请求使用会比较多,主要对HTTP请求进行总结记录

二、HTTP请求

场景:应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。

request接口开发步骤 :

  1. 从@ohos.net.http.d.ts中导入http命名空间。
  2. 调用createHttp()方法,创建一个HttpRequest对象。
  3. 调用该对象的on()方法,订阅http响应头事件,此接口会比request请求先返回。可以根据业务需要订阅此消息。
  4. 调用该对象的request()方法,传入http请求的url地址和可选参数,发起网络请求。
  5. 按照实际业务需要,解析返回结果。
  6. 调用该对象的off()方法,取消订阅http响应头事件。
  7. 当该请求使用完毕时,调用destroy()方法主动销毁。

2.1、开发网络权限。

在model.json5文件中的module模块下添加如下请求权限:

    "requestPermissions": [{"name": "ohos.permission.INTERNET"}],

2.2、使用HTTP请求

2.2.1、定义HTTP请求方法

在ets文件夹下新建model文件夹,在model内新建LoginModel文件,用来处理登录HTTP请求

model文件夹主要用来处理数据查询

具体代码👇


import http from '@ohos.net.http'
class LoginModel{baseUrl:string = 'http://127.0.0.1:8000'reqLogin(){return new Promise((resolve,reject) => {//1.创建http请求let httpRequest = http.createHttp()//2.发送请求httpRequest.request(`${this.baseUrl}/saas-api/user/login`,{method:http.RequestMethod.POST,extraData:{'username':'admin','password':'admin'},header:{'X-Tenant-ID':'1','Content-Type': 'application/json'},connectTimeout:10000,readTimeout:10000},).then(resp => {if(resp.responseCode === 200){//查询成功console.log('http--成功',resp.result)resolve(JSON.parse(resp.result.toString()))}else{console.log('http--失败',resp.result)reject('查询失败')}}).catch(error => {console.info('error:'+JSON.stringify(error))reject('查询失败')})})}
}const loginModel = new LoginModel()
export default loginModel as LoginModel

2.2.2、在页面中使用HTTP封装的请求方法

import LoginModel from '../model/LoginModel'
@Entry
@Component
struct HttpPage {@State message: string = 'Hello'build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Button('http请求').onClick(() => {LoginModel.reqLogin()})}.width('100%')}.height('100%')}
}

在页面中点击 'http请求' 按钮时,日志会打印成功的结果

三、第三方库axios 

3.1、下载和安装ohpm

具体可查看官网指引:文档中心

3.1.1、下载ohpm工具包,点击链接获取。

3.1.2、解压工具包,执行初始化命令

3.1.3、将ohpm配置到环境变量中。

配置好后,打开命令窗口输入 ohpm -v,便能看到版本号

3.2、下载和安装axios

3.2.1、下载axios

进入项目目录,输入下面命令

ohpm install @ohos/axios

安装成功后,在项目的oh-package.json5文件内可以查看到安装的库,在oh_modules下也能看到安装的安装包

3.2.2、开发网络权限

在model.json5文件中的module模块下添加如下请求权限:

    "requestPermissions": [{"name": "ohos.permission.INTERNET"}],

备注:HTTP请求时已经设置了请求权限,此处就不重复设置了

推荐:鸿蒙提供的第三方库地址OpenHarmony三方库中心仓

3.3、使用axios

3.3.1、定义axios请求方法

在model内新建LoginModel文件LoginModelAxios文件,用来处理登录axios请求

import axios from '@ohos/axios'
class LoginModelAxios{baseUrl:string = 'http://127.0.0.1:8000'async reqLogin(){let resp =await axios.post(`${this.baseUrl}/saas-api/user/login`,{username:'admin',password:'admin'},{headers:{'X-Tenant-ID':'1'}})if(resp.status === 200){console.log('axios--成功',JSON.stringify(resp.data))return resp.data}//查询失败console.log('axios--失败',JSON.stringify(resp))}
}const loginModelAxios = new LoginModelAxios()
export default loginModelAxios as LoginModelAxios

3.3.2、在页面中使用axios封装的请求方法 

import LoginModel from '../model/LoginModel'
import loginModelAxios from '../model/LoginModelAxios'
@Entry
@Component
struct HttpPage {@State message: string = 'Hello'build() {Row() {Column({space:8}) {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Button('http请求').onClick(() => {LoginModel.reqLogin()})Button('axios请求').onClick(() => {loginModelAxios.reqLogin()})}.width('100%')}.height('100%')}
}

在页面中点击 'axios请求' 按钮时,日志会打印成功的结果 

最后:👏👏😊😊😊👍👍 

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

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

相关文章

OceanBase数据迁移-从MySQL导入数据到OceanBase

把MySQL中的数据导入到OceanBase,分几个步骤: 1.准备一份MySQL测试数据集2.使用mydumper工具导出MySQL数据3.使用myloader工具导入到OceanBase4.验证测试数据集在OceanBase下的执行情况 1.准备一份MySQL测试数据集 1.1.从github下载mysql测试数据集&a…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机沿自定义圆形轨迹正向飞行(带偏航角控制)并在Gazebo中可视化

在Simulink中使用ROS2控制无人机沿自定义圆形轨迹正向飞行(带偏航角控制)并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模…

模板(类模板)---C++

模板目录 2.类模板2.1 类模板语法2.2 类模板与函数模板区别2.3 类模板中成员函数创建时机2.4 类模板对象做函数参数2.5 类模板与继承2.6 类模板成员函数类外实现2.7 类模板分文件编写2.8 类模板与友元2.9 类模板案例 2.类模板 2.1 类模板语法 类模板作用: 建立一个…

[嵌入式AI从0开始到入土]15_orangepi_aipro欢迎界面、ATC bug修复、镜像导出备份

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注:等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

notepad++运行python闪一下就没啦

问题:Notepad直接快捷键运行Python代码,出现闪一下就没了 解决措施: ①点击菜单运行(Run) --> 运行(Run)弹出的对话框 ②把 cmd /k python "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT 粘贴进入这个对话框内 ③点击保存&a…

Rust Vs Go:从头构建一个web服务

Go 和 Rust 之间的许多比较都强调它们在语法和初始学习曲线上的差异。然而,最终的决定性因素是重要项目的易用性。 “Rust 与 Go”争论 Rust vs Go 是一个不断出现的话题,并且已经有很多关于它的文章。部分原因是开发人员正在寻找信息来帮助他们决定下…

EventStream获得数据流,前端配置获得推送的流

如上图所示,请求一个接口,接口以数据流的方式向客户端推送数据,默认需要消息收集一条,在原来的基础上追加,在create-react-app生成的工程中,如果代理使用了中间件http-proxy-middleware,同时dev…

强化学习(GPS)

GPS——Guided Policy Search引导策略搜索 基于模型的强化学习算法 GPS目前被作为基础算法广泛应用于各种强化学习任务中,其出发点在于纯粹的策略梯度方法在更新参数时不会用到环境模型因而属于一种无模型强化学习算法。由于没有利用任何环境的内在属性&#xff0…

stm32cubemx简单介绍

(本文为简单介绍,内容源于网络) STM32CubeMX是STMicroelectronics推出的一款用于STM32微控制器系列的图形化配置工具,旨在简化嵌入式软件开发过程。本文将对STM32CubeMX进行简要介绍,包括其功能特点、优势以及在嵌入式…

猫头虎分享已解决Bug || RuntimeError: size mismatch, m1: [32 x 100], m2: [500 x 10]

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

2.22学习总结

1.营救 2.租用游艇 3.砍树 4.买礼物 5.刷题统计 砍树https://www.dotcpp.com/oj/problem3157.html 题目描述 给定一棵由 n 个结点组成的树以及 m 个不重复的无序数对 (a1, b1), (a2, b2), . . . , (am, bm),其中 ai 互不相同,bi 互不相同,ai…

Spring 类型转换、数值绑定与验证(一)— DataBinder

DataBinder 是Spring用于数据绑定、类型转换及验证的类。使用场景有:1)xml配置文件定义bean,Spring 内部使用DataBinder 来完成属性的绑定;2)Web请求参数绑定,在Spring MVC 中,Controller的方法参数通常会自…