鸿蒙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值(根据实际情况定) 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]:线程(二)
✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 与Windows环境不同,我们在linux环境下需要通过指令进行各操作&…...
【unity进阶知识3】封装一个事件管理系统
前言 框架的事件系统主要负责高效的方法调用与数据传递,实现各功能之间的解耦,通常在调用某个实例的方法时,必须先获得这个实例的引用或者新实例化一个对象,低耦合度的框架结构希望程序本身不去关注被调用的方法所依托的实例对象…...
服务器使用frp做内网穿透详细教程,请码住
目录 1.内网穿透的定义 2.前提条件 3.frp下载地址 4.配置服务器端的frps.toml文件 5. 配置客户端,即物理服务器或者是电脑本机地址 6.添加服务端启动命令startServerFrp.sh 7.添加客户端启动命令startClientFrp.sh 8. 查看服务端启动日志 9.查看客户端启…...
小程序视频编辑SDK解决方案,轻量化视频制作解决方案
面对小程序、网页、HTML5等多样化平台,如何轻松实现视频编辑的轻量化与高效化,成为了众多开发者和内容创作者共同面临的挑战。正是洞察到这一市场需求,美摄科技推出了其领先的小程序视频编辑SDK解决方案,为创意插上翅膀࿰…...
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标记 具体实例 编辑 一、开发工具 最基础的开发工具是:HBuilder 二、HTML文档结构 HTML文档由头部head和主体body组成 头部head标记中可以定义标题样式,头部信…...
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中支持行存、列存和行列共存三种存储格式,不同的存储格式适用于不同的场景。在建表时通过设置orientation属性指…...
关于vue2+uniapp+uview+vuex 私募基金项目小程序总结
1.关于权限不同tabbar处理 uniapp 实现不同用户展示不同的tabbar(底部导航栏)_uniapp tabbar-CSDN博客 但是里面还有两个问题 一个是role应该被本地存储并且初始化 第二个问题是假设我有3个角色 每个角色每个tabbar不一样的,点击tabbar时候会导致错乱 第三个问题…...
多线程(一):线程的基本特点线程安全问题ThreadRunnable
目录 1、线程的引入 2、什么是线程 3、线程的基本特点 4、线程安全问题 5、创建线程 5.1 继承Thread类,重写run 5.1.1 创建Thread类对象 5.1.2 重写run方法 5.1.3 start方法创建线程 5.1.4 抢占式执行 5.2 实现Runnable,重写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++】
二叉搜素树简单介绍 二叉搜索树又称二叉排序树,是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 注意…...
unity 介绍Visual Scripting Scene Variables
Visual Scripting中的场景变量是指在Unity中使用可视化脚本时,能够在不同场景间传递和存储数据的变量。这些变量可以用来跟踪游戏状态、玩家信息或其他动态数据,允许开发者在不编写代码的情况下创建复杂的游戏逻辑。 场景变量的优势包括: 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# 所在位置(自定义) /opt/filebeat-7.17.23-linux-x86_64/filebeat.ym…...
个人获取Wiley 、ScienceDirect、SpringerLink三个数据库文献的方法
在同学们的求助文献中经常出现Wiley 、ScienceDirect、SpringerLink这三个数据库文献。本文下面就讲解一下个人如何不用求助他人自己搞定这三个数据库文献下载的方法。 个人下载文献首先要先获取数据库资源,小编平时下载文献是通过科研工具——文献党下载器获取的数…...
Java五子棋
目录 一:案例要求: 二:代码: 三:结果: 一:案例要求: 实现一个控制台下五子棋的程序。用一个二维数组模拟一个15*15路的五子棋棋盘,把每个元素赋值位“┼”可以画出棋…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
