当前位置: 首页 > news >正文

鸿蒙HarmonyOS之封装Http请求工具类

一、常量类 Constants.ets

//超时时间10秒
static readonly HTTP_READ_TIMEOUT: number = 10000;//请求成功返回码
static readonly HTTP_CODE_200: number = 200;//请求成功后data中的code值(根据实际情况定)
static readonly SERVER_CODE_SUCCESS: number = 0;

二、请求工具类HttpUtil.ets

import { http } from '@kit.NetworkKit';
import ResponseResult from '../bean/ResponseResult';
import Constants, { ContentType } from '../constants/Constants';//Get请求
export function httpRequestGet(url: string) {return httpRequest(url, http.RequestMethod.GET);
}//Post请求
export function httpRequestPost(url: string, requestData: Object) {return httpRequest(url, http.RequestMethod.POST, requestData);
}//处理请求参数和请求结果
function httpRequest(url: string, method: http.RequestMethod, params?: Object): Promise<ResponseResult> {let httpRequest = http.createHttp();let responseResult = httpRequest.request(url, {method: method,readTimeout: Constants.HTTP_READ_TIMEOUT,header: {'Content-Type': ContentType.JSON,},connectTimeout: Constants.HTTP_READ_TIMEOUT,extraData: params});let serverData = new ResponseResult();return responseResult.then((value: http.HttpResponse) => {let result = `${value.result}`;let resultJson: ResponseResult = JSON.parse(result);if (value.responseCode === Constants.HTTP_CODE_200) {if (resultJson.code === Constants.SERVER_CODE_SUCCESS) {serverData.value = resultJson.value;}serverData.code = resultJson.code;serverData.msg = resultJson.msg;} else {serverData.code = resultJson.code;serverData.msg = resultJson.msg;}return serverData;}).catch(() => {return serverData;});
}

三、使用示例

1、可新建一个ets文件存放请求对象RequestBean和请求接收ResponseBean等对象

//DataPage类
export class DataPage<T> {pageIndex: number = 1; //页码pageSize: number = 10; //页面大小pageTotal: number = 1; //总页数amount: number = 0; //记录总数data: T[] = []; //本页数据
}//请求Bean
export class ActivityRequest {token: string = "";clientType: string = "";page: number = 1;
}//请求接收Bean
export class ActivityResponse {id: number = 0;mainActivityId: number = 0;name: string = "";.......
}

2、编写请求方法,传入请求参数,设置Url,处理请求结果等

 RequestData(page: number): Promise<DataPage<ActivityResponse>> {return new Promise((resolve: Function) => {let url = '请求Url.....';let requestData: ActivityRequest = new ActivityRequest();requestData.clientType = 'HarmonyOS';PreferencesUtil.getLoginToken().then((value) => {requestData.token = value;requestData.page = page;Logger.debug(this.TAG,'请求Url:'+ url)Logger.debug(this.TAG,'请求参数信息:'+ JSON.stringify(requestData))//这里调用HttpUtil工具类里面的Post请求方法httpRequestPost(url, requestData).then((data: ResponseResult) => {if (data && data.code === Constants.SERVER_CODE_SUCCESS) {resolve(data.value);Logger.debug(this.TAG,'请求成功!')//可以在此处处理请求结果,也可以在步骤3所示请求回调中处理请求的结果} else {Logger.debug(this.TAG,'请求失败!' + data.code + ": " + data.msg)resolve(null);if (data.code === -1) {showToast('请求异常')}else {showToast(data.msg)}}}).catch(() => {Logger.error(this.TAG,'请求异常!')showToast('网络请求异常!')resolve(null);});});});}

3、调用,返回请求成功后的数据结果,可进行后续处理

this.RequestData(page).then((result: DataPage<ActivityResponse>) => {if (result){Logger.debug(this.TAG,'页码pageIndex:'+ result.pageIndex + ' 每页数量pageSize:'+ result.pageSize + ' 总页数pageTotal:'+ result.pageTotal + '记录总数amount:' + result.amount)if(result.amount > 0) {Logger.debug(this.TAG,'数据:'+ JSON.stringify(this.liveDataList))}else{Logger.debug(this.TAG,'数据为空')}}});

四、完成,Nice!

相关文章:

鸿蒙HarmonyOS之封装Http请求工具类

一、常量类 Constants.ets //超时时间10秒 static readonly HTTP_READ_TIMEOUT: number 10000;//请求成功返回码 static readonly HTTP_CODE_200: number 200;//请求成功后data中的code值&#xff08;根据实际情况定&#xff09; static readonly SERVER_CODE_SUCCESS: numb…...

java基础(4)类和对象

目录 1.前言 2.正文 2.1类的定义与使用 2.1.1类的定义 2.1.2类的实例化 2.1.3this引用 2.1.3.1 访问当前对象的成员变量 2.1.3.2调用当前对象的成员方法 2.1.3.3构造函数中的 this 2.1.3.4归纳this 2.2封装 2.2.1封装的定义 2.2.2访问修饰符 2.3static 2.3.1sta…...

[Linux]:线程(二)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;Linux学习 贝蒂的主页&#xff1a;Betty’s blog 与Windows环境不同&#xff0c;我们在linux环境下需要通过指令进行各操作&…...

【unity进阶知识3】封装一个事件管理系统

前言 框架的事件系统主要负责高效的方法调用与数据传递&#xff0c;实现各功能之间的解耦&#xff0c;通常在调用某个实例的方法时&#xff0c;必须先获得这个实例的引用或者新实例化一个对象&#xff0c;低耦合度的框架结构希望程序本身不去关注被调用的方法所依托的实例对象…...

服务器使用frp做内网穿透详细教程,请码住

目录 1.内网穿透的定义 2.前提条件 3.frp下载地址 4.配置服务器端的frps.toml文件 5. 配置客户端&#xff0c;即物理服务器或者是电脑本机地址 6.添加服务端启动命令startServerFrp.sh 7.添加客户端启动命令startClientFrp.sh 8. 查看服务端启动日志 9.查看客户端启…...

小程序视频编辑SDK解决方案,轻量化视频制作解决方案

面对小程序、网页、HTML5等多样化平台&#xff0c;如何轻松实现视频编辑的轻量化与高效化&#xff0c;成为了众多开发者和内容创作者共同面临的挑战。正是洞察到这一市场需求&#xff0c;美摄科技推出了其领先的小程序视频编辑SDK解决方案&#xff0c;为创意插上翅膀&#xff0…...

ERROR [internal] load metadata for docker.io/library/openjdk:8

ERROR: failed to solve: DeadlineExceeded: DeadlineExceeded: DeadlineExceeded: openjdk:8: failed to do request: Head “https://registry-1.docker.io/v2/library/openjdk/manifests/8”: dial tcp 202.160.129.6:443: i/o timeout 在构建docker镜像时从docker.io/libr…...

Wed前端--HTML基础

目录 一、开发工具 二、HTML文档结构 2.1头部head 2.1.1title标记 2.1.2元信息meta标记 具体实例 ​编辑 一、开发工具 最基础的开发工具是&#xff1a;HBuilder 二、HTML文档结构 HTML文档由头部head和主体body组成 头部head标记中可以定义标题样式&#xff0c;头部信…...

Latex 自定义运算符加限定条件的实现

“\operatorname{mean}\limits_{n \in N}” 的效果 mean ⁡ n ∈ N \operatorname{mean}\limits_{n \in N} meann∈N​ “\operatorname*{mean}\limits_{n \in N}” 的效果 mean ⁡ n ∈ N \operatorname*{mean}\limits_{n \in N} n∈Nmean​ 参考这篇文章...

大数据实时数仓Hologres(三):存储格式介绍

文章目录 存储格式介绍 一、格式 二、使用建议 三、技术原理 1、列存 2、行存 3、行列共存 四、使用示例 存储格式介绍 一、格式 在Hologres中支持行存、列存和行列共存三种存储格式&#xff0c;不同的存储格式适用于不同的场景。在建表时通过设置orientation属性指…...

关于vue2+uniapp+uview+vuex 私募基金项目小程序总结

1.关于权限不同tabbar处理 uniapp 实现不同用户展示不同的tabbar(底部导航栏)_uniapp tabbar-CSDN博客 但是里面还有两个问题 一个是role应该被本地存储并且初始化 第二个问题是假设我有3个角色 每个角色每个tabbar不一样的&#xff0c;点击tabbar时候会导致错乱 第三个问题…...

多线程(一):线程的基本特点线程安全问题ThreadRunnable

目录 1、线程的引入 2、什么是线程 3、线程的基本特点 4、线程安全问题 5、创建线程 5.1 继承Thread类&#xff0c;重写run 5.1.1 创建Thread类对象 5.1.2 重写run方法 5.1.3 start方法创建线程 5.1.4 抢占式执行 5.2 实现Runnable&#xff0c;重写run【解耦合】★…...

启动hadoop集群出现there is no HDFS_NAMENODE_USER defined.Aborting operation

解决方案 在hadoop-env.sh中添加 export HDFS_DATANODE_USERroot export HDFS_NAMENODE_USERroot export HDFS_SECONDARYNAMENODE_USERroot export YARN_RESOURCEMANAGER_USERroot export YARN_NODEMANAGER_USERroot 再次运行即可。...

Redis实现短信登录解决状态登录刷新的问题

Redis实现短信登录 获取验证码控制层 /*** 发送手机验证码*/PostMapping("/code")public Result sendCode(RequestParam("phone") String phone) {// TODO 发送短信验证码并保存验证码return userService.sendCode(phone);} 获取验证码服务层 Result sendC…...

33. java快速排序

1. 前言 排序算法是数据结构中最基础的算法,快速排序则是面试中最常见的排序算法。无论是校招面试还是社招面试,快速排序算法的出现频率远高于其他算法,而且经常会要求候选人白板手写实现算法。快速排序算法的核心是分治处理,重点是分析时间复杂度。 2. 快速排序算法 面试…...

普通二叉搜索树的模拟实现【C++】

二叉搜素树简单介绍 二叉搜索树又称二叉排序树&#xff0c;是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 注意…...

unity 介绍Visual Scripting Scene Variables

Visual Scripting中的场景变量是指在Unity中使用可视化脚本时&#xff0c;能够在不同场景间传递和存储数据的变量。这些变量可以用来跟踪游戏状态、玩家信息或其他动态数据&#xff0c;允许开发者在不编写代码的情况下创建复杂的游戏逻辑。 场景变量的优势包括&#xff1a; 1…...

linux服务器部署filebeat

# 下载filebeat curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.23-linux-x86_64.tar.gz # 解压 tar xzvf filebeat-7.17.23-linux-x86_64.tar.gz# 所在位置&#xff08;自定义&#xff09; /opt/filebeat-7.17.23-linux-x86_64/filebeat.ym…...

个人获取Wiley 、ScienceDirect、SpringerLink三个数据库文献的方法

在同学们的求助文献中经常出现Wiley 、ScienceDirect、SpringerLink这三个数据库文献。本文下面就讲解一下个人如何不用求助他人自己搞定这三个数据库文献下载的方法。 个人下载文献首先要先获取数据库资源&#xff0c;小编平时下载文献是通过科研工具——文献党下载器获取的数…...

Java五子棋

目录 一&#xff1a;案例要求&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;案例要求&#xff1a; 实现一个控制台下五子棋的程序。用一个二维数组模拟一个15*15路的五子棋棋盘&#xff0c;把每个元素赋值位“┼”可以画出棋…...

【从0开始自动驾驶】用python做一个简单的自动驾驶仿真可视化界面

【从0开始自动驾驶】用python做一个简单的自动驾驶仿真可视化界面 废话几句废话不多说&#xff0c;直接上源码目录结构init.pysimulator.pysimple_simulator_app.pyvehicle_config.json 废话几句 自动驾驶开发离不开仿真软件成品仿真软件种类多https://zhuanlan.zhihu.com/p/3…...

一拖二快充线:单接与双接的多场景应用

在当代社会&#xff0c;随着智能手机等电子设备的普及&#xff0c;充电问题成为了人们关注的焦点。一拖二快充线作为一种创新的充电解决方案&#xff0c;因其便捷性与高效性而受到广泛关注。本文将深入探讨一拖二快充线的定义、原理以及在单接与双接手机场景下的应用&#xff0…...

接口自动化测试概述

目录 1 接口自动化测试简介 1.1 什么是接口 1.2 什么是接口测试 1.3 为什么要做接口测试 1.4 什么是接口测试自动化 1.5 为什么要做接口测试自动化 2 接口自动化测试规范 2.1 文档准备 2.1.1 需求文档 2.1.2 接口文档 2.1.3 UI 交互图 2.1.4 数据表设计文档 2.2 明…...

Fingerprint.js:精准用户识别的浏览器指纹技术

在数字化时代&#xff0c;用户识别成为互联网服务中不可或缺的一环。随着隐私保护意识的增强&#xff0c;传统的用户识别方法如Cookies和本地存储面临着越来越多的挑战。而Fingerprint.js作为一种创新的浏览器指纹技术&#xff0c;以其高效、隐私友好的特性&#xff0c;逐渐在个…...

Gson将对象转换为JSON(学习笔记)

JSON有两种表示结构&#xff0c;对象和数组。对象结构以"{"大括号开始&#xff0c;以"}"大括号结束。中间部分由0或多个以”&#xff0c;"分隔的”key(关键字)/value(值)"对构成&#xff0c;关键字和值之间以":"分隔&#xff0c;语法结…...

什么是IPv6

目前国内的网络正在快速的向IPv6升级中&#xff0c;从网络基础设施如运营商骨干网、城域网&#xff0c;到互联网服务商如各类云服务&#xff0c;以及各类终端设备厂商如手机、电脑、路由器、交换机等。目前运营商提供的IPv6线路主要分为支持前缀授权和不支持前缀授权两种。 说…...

python画图|放大和缩小图像

在较多的画图场景中&#xff0c;需要对图像进行局部放大&#xff0c;掌握相关方法非常有用&#xff0c;因此我们很有必要一起学习 【1】官网教程 首先是进入官网教程&#xff0c;找到学习资料&#xff1a; https://matplotlib.org/stable/gallery/subplots_axes_and_figures…...

Mac优化清理工具CleanMyMac X 4.15.6 for mac中文版

CleanMyMac X 4.15.6 for mac中文版下载是一款功能更加强大的系统优化清理工具&#xff0c;软件只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉&#xff0c;节省宝贵的磁盘空间。CleanMyMac X 4.15.6 for mac 软件与最新macOS系统更加兼容&#xff0c;流畅地…...

资质申请中常见的错误有哪些?

在申请建筑资质的过程中&#xff0c;企业可能会犯一些常见的错误&#xff0c;以下是一些需要避免的错误&#xff1a; 1. 资料准备不充分&#xff1a; 申请资质需要提交大量的资料&#xff0c;包括企业法人资料、财务报表、业绩证明等。资料不齐全或不准确都可能导致申请失败。…...

基于单片机的多路温度检测系统

**单片机设计介绍&#xff0c;基于单片机CAN总线的多路温度检测系统设计 文章目录 前言概要功能设计设计思路 软件设计效果图 程序设计程序 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探…...

wordpress主题 设定/自己如何优化网站排名

在新建类的时候&#xff0c;是可以直接表面你要新建的这个类是干啥的&#xff0c;即&#xff0c;给这个新建的类加上注释。我这详细记录示范下&#xff0c;在idea里面是怎么设置和操作的。1.idea创建类的时候&#xff0c;自动给类加注释的设置示范。这地方&#xff0c;可以设置…...

企业简介范文大全/谷歌网站推广优化

怎样在VS2008自带的SQl2005里使用sql server身份验证登陆 (转载&#xff09; 相信很多用过vs2005或最近用vs2008的朋友可能有这样的困惑&#xff1a;VS自带的sql server 登陆时默认的是用windows身份验证登陆&#xff0c;而不是用sql server身份验证。因为在这里的sql时集成在v…...

桂林二手房/英文seo实战派

14.7.4 InnoDB File-Per-Table Tablespaces从历史上看,所有的InnoDB 表和indexes 是存储在system 表空间。这个整体的方法是针对机器是整个用于数据库处理,精心策划的数据增长,任何磁盘存储分配给MySQL 不会被其他目的需要.InnoDB的file-per-table tablespace功能提供一个更加灵…...

网站 加域名/四川百度推广排名查询

http://www.ctshk.com/passport/talent_bookrep.htm 換領往來港澳通行證和申請簽注延期須知為方便持《往來港澳通行證》以內地逗留簽注在香港工作、就學、接受培訓的內地居民及其隨行家屬&#xff0c;以及勞務人員在香港逗留標籤的有效期間內&#xff0c;可以在香港換領 &#…...

动态网站制作教程/站长工具seo综合查询关键词

Java是一个安全的开发工具&#xff0c;它阻止开发人员犯很多低级的错误&#xff0c;而大部份的错误都是基于内存管理方面的。如果你想搞破坏&#xff0c;可以使用Unsafe这个类。这个类是属于sun.*API中的类&#xff0c;并且它不是J2SE中真正的一部份&#xff0c;因此你可能找不…...

宣威网站建设c3sales/百度信息流广告怎么投放

说明&#xff1a; 该教程绕开了javascript的一些基本的语法知识&#xff0c;直接讲解javascript中最难理解的两个部分&#xff0c;也是和其他主流面向对象语言区别最大的两个部分——原型和闭包&#xff0c;当然&#xff0c;肯定少不了原型链和作用域链。帮你揭开javascript最神…...