鸿蒙harmony--HTTP数据请求的简单使用

 不得不承认,年龄越大性格就越简单,更喜欢安静,不喜欢去了解别人,也不想被了解,只想静静的做自己喜欢的事……

目录

一,场景介绍

二,接口说明

三,http请求使用

一,场景介绍

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

二,接口说明

HTTP数据请求功能主要由http模块提供。

使用该功能需要申请ohos.permission.INTERNET权限。

接口名描述
createHttp()创建一个http请求。
request()根据URL地址,发起HTTP网络请求。
requestInStream()10+根据URL地址,发起HTTP网络请求并返回流式响应
destroy()中断请求任务。
on(type: ‘headersReceive’)订阅HTTP Response Header 事件。
off(type: ‘headersReceive’)取消订阅HTTP Response Header 事件。
once(‘headersReceive’)8+订阅HTTP Response Header 事件,但是只触发一次。
on(‘dataReceive’)10+订阅HTTP流式响应数据接收事件。
off(‘dataReceive’)10+取消订阅HTTP流式响应数据接收事件。
on(‘dataEnd’)10+订阅HTTP流式响应数据接收完毕事件。
off(‘dataEnd’)10+取消订阅HTTP流式响应数据接收完毕事件。
on(‘dataReceiveProgress’)10+订阅HTTP流式响应数据接收进度事件。
off(‘dataReceiveProgress’)10+取消订阅HTTP流式响应数据接收进度事件。

三,http请求使用

使用步骤为:

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

简单的演示(只是简单演示,不作为项目使用)

//1.从@ohos.net.http.d.ts中导入http命名空间。
import http from '@ohos.net.http';export default class HttpClient {private request :http.HttpRequest | null = null;/*** 2.创建HttpRequest* */createRequest(){this.request =http.createHttp()}/**  3.用于订阅HTTP响应头,此接口会比request请求先返回。* */registerOn(){this.request.on("headersReceive",(event)=>{console.info("headersReceive--->",event)})}/*** 4,调用该对象的request()方法,传入http请求的url地址和可选参数,发起网络请求* */requestMethod(url:string,options: http.HttpRequestOptions){this.request.request(url,options,(err,data)=>{//5.解析请求结果if(err){//请求失败}else {//请求成功//返回码data.responseCode//返回结果data.result// 6.取消订阅HTTP响应头事件this.request.off('headersReceive');// 7.当该请求使用完毕时,调用destroy方法主动销毁this.request.destroy();}})}/***** 创建请求Options* */createRequestOptions():http.HttpRequestOptions{let options:http.HttpRequestOptions={}//请求方式options.method=http.RequestMethod.GET// 当使用POST请求时此字段用于传递内容options.extraData="extraData"// 可选,指定返回数据的类型options.expectDataType=http.HttpDataType.STRING// 可选,默认为trueoptions.usingCache=true// 可选,默认为1options.priority=1//开发者根据自身业务需要添加header字段options.header=[{'Content-Type': 'application/json'}]// 可选,默认为60000msoptions.readTimeout=60000// 可选,默认为60000msoptions.connectTimeout=60000// 可选,协议类型默认值由系统自动指定options.usingProtocol=http.HttpProtocol.HTTP1_1return options}}

调用者:

import HttpClient from './HttpTest'export default class HttpUse{private request:HttpClient | null = nullrequestUrl(){this.request = new HttpClient()this.request.createRequest()this.request.registerOn()this.request.requestMethod('https://www.baidu.com',this.request.createRequestOptions())}
}

注意:

1,需要添加网络权限

2,使用时尽量

①在work使用

②taskpool使用

③使用promise异步

防止阻塞主线程

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

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

相关文章

Python for循环练习-输入一个非负整数N,计算N的阶乘N!

题目:输入一个非负整数N,计算N的阶乘N! 要计算非负整数N的阶乘(N!),可以使用for循环来累乘从1到N的所有整数。 实现: # 读取用户输入的非负整数 n int(input("请输入一个非负整数&…

ora-12154无法解析指定的连接标识符

用户反映查询的时候报错ora-12154 这个系统只做历史数据查询使用,使用并不平凡,该数据库曾做过一次服务器间的迁移。 用户描述,所有oracle客户端查询该视图都报tns错误,一般ora-12154会发生在连接数据库时,因为tns配…

[文件IO]文件操作的几个笔试题

目录 1.扫描指定目录,找到要查询的文件名,并询问用户是否要删除 2. 文件的复制 3.扫描指定目录,并找到名称或者内容中包含指定字符的所有普通文件(不包含目录) 1.扫描指定目录,找到要查询的文件名&#x…

Hardware-Aware-Transformers开源项目笔记

文章目录 Hardware-Aware-Transformers开源项目笔记开源项目背景知识nas进化算法进化算法代码示例 开源项目Evolutionary Search1 生成延迟的数据集2 训练延迟预测器3 使延时约束运行搜索算法4. 训练搜索得到的subTransformer5. 根据重训练后的submodel 得到BLEU精度值 代码结构…

医学图像的图像处理、分割、分类和定位-1

一、说明 本报告全面探讨了应用于医学图像的图像处理和分类技术。开展了四项不同的任务来展示这些方法的多功能性和有效性。任务 1 涉及读取、写入和显示 PNG、JPG 和 DICOM 图像。任务 2 涉及基于定向变化的多类图像分类。此外,我们在任务 3 中包括了胸部 X 光图像…

java数据结构与算法刷题-----LeetCode977. 有序数组的平方

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 时间复杂度 空间复杂度 O(n * l o g 2 n log_2{n} log2​…

PyTorch 中的距离函数深度解析:掌握向量间的距离和相似度计算

目录 Pytorch中Distance functions详解 pairwise_distance 用途 用法 参数 数学理论公式 示例代码 cosine_similarity 用途 用法 参数 数学理论 示例代码 输出结果 pdist 用途 用法 参数 数学理论 示例代码 总结 Pytorch中Distance functions详解 pair…

Js面试之防抖与节流

Js面试之防抖与节流 防抖节流二者区别触发方式不同执行时间点不同 适用场景不同 最近在整理一些前端面试中经常被问到的问题,分为vue相关、react相关、js相关、react相关等等专题,可持续关注后续内容,会不断进行整理~ 防抖(Deboun…

JVM工作原理与实战(十九):运行时数据区-方法区

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、方法区 1.方法区介绍 2.方法区在Java虚拟机的实现 3.类的元信息 4.运行时常量池 5.字符串常量池 6.静态变量的存储 总结 前言 JVM作为Java程序的运行环境…

App分发测试平台:改变应用开发的游戏规则

App分发测试平台是一个提供应用开发者上传、测试、分享和发布应用的在线服务平台。它为开发者提供了一个高效的测试环境,并为用户提供了一个方便的应用获取渠道。其中,测试环节尤为关键,因为它能够确保应用在上线之前达到预期的功能和性能。 …

问题:Feem无法发送信息OR无法连接(手机端无法发给电脑端)

目录 前言 问题分析 资源、链接 其他问题 前言 需要在小米手机、华为平板、Dell电脑之间传输文件,试过安装破解的华为电脑管家、小米的MIUI文件传输等,均无果。(小米“远程管理”ftp传输倒是可以,但速度太慢了,且…

Java JVM 堆、栈、方法区详解

目录 1. 栈 2. 堆 3. 方法区 4. 本地方法栈 5. 程序计数器 首先来看一下JVM运行时数据区有哪些。 1. 栈 在介绍JVM栈之前,先了解一下 栈帧 概念。 栈帧:一个栈帧随着一个方法的调用开始而创建,这个方法调用完成而销毁。栈帧内存放者方…

SpringBoot 集成 Canal 基于 MySQL 做数据同步

一、canal 组件关系 下载地址:https://github.com/alibaba/canal/releases/download/canal-1.1.7/ 这里面主要的有两个 canal.deployer-1.1.7.tar.gz 和 canal.adapter-1.1.7.tar.gz,canal.admin-1.1.7.tar.gz 是一个监控服务,可选&#xf…

ROS学习笔记8——实现ROS通信时的常用命令

机器人系统中启动的节点少则几个,多则十几个、几十个,不同的节点名称各异,通信时使用话题、服务、消息、参数等等都各不相同,一个显而易见的问题是: 当需要自定义节点和其他某个已经存在的节点通信时,如何获取对方的话…

gitgud.io+Sapphire注册账号教程

gitgud.io是一个仓库,地址 https://gitgud.io/,点进去之后会看到注册页面。 意思是需要通过注册这个Sapphire账户来登录。点击右边的Sapphire,就跳转到Sapphire的登陆页面,点击创建新账号,就进入注册页面。&#xff0…

SpiderFlow爬虫平台漏洞利用分析(CVE-2024-0195)

1. 漏洞介绍 SpiderFlow爬虫平台项目中spider-flow-web\src\main\java\org\spiderflow\controller\FunctionController.java文件的FunctionService.saveFunction函数调用了saveFunction函数,该调用了自定义函数validScript,该函数中用户能够控制 functi…

Spring | Spring中的Bean--下

Spring中的Bean: 4.Bean的生命周期5.Bean的配装配式 ( 添加Bean到IOC容器的方式 依赖注入的方式 )5.1 基于XML的配置5.2 基于Annotation (注解) 的装配 (更常用)5.3 自动装配 4.Bean的生命周期 Spring容器可以管理 singleton作用域的Bean的生命周期,在此…

go语言(七)----slice的声明方式

1、声明方式一 //声明一个slice1是一个切片,但是并没有给slice分配空间var slice1 []intslice1 make([]int,3)2、声明方式二 声明一个slice切片,同时给slice分配空间,3个空间,初始化值是0var slice1 []int make([]int,3)3、声…

ICCV2023 | PTUnifier+:通过Soft Prompts(软提示)统一医学视觉语言预训练

论文标题:Towards Unifying Medical Vision-and-Language Pre-training via Soft Prompts 代码:https://github.com/zhjohnchan/ptunifier Fusion-encoder type和Dual-encoder type。前者在多模态任务中具有优势,因为模态之间有充分的相互…

从临床和科研场景分析ChatGPT在医疗健康领域的应用可行性

2023年4月发表在Journal Medical Systems的文献《Evaluating the Feasibility of ChatGPT in Healthcare: An Analysis of Multiple Clinical and Research Scenarios》(评估 ChatGPT 在医疗健康领域的可行性:对多种临床和研究场景的分析)介绍…