鸿蒙OS开发实例:【工具类封装-http请求】

news2024/12/26 3:37:06

import http from '@ohos.net.http'; import promptAction from '@ohos.promptAction';

封装HTTP接口请求类,提供格式化的响应信息输出功能。 使用 DevEco Studio 3.1.1 Release 及以上版本,API 版本为 api 9 及以上。

示例:

 import { MyHttpUtil } from '../common/utils/MyHttpUtil';
 async function fetchWeatherData() {
 const request = await MyHttpUtil.request('https://api.oioweb.cn/api/weather/GetWeather', 'GET', {}, true);
 }
鸿蒙OS开发更多内容↓点击HarmonyOS与OpenHarmony技术
鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或+mau123789学习,是v喔

搜狗高速浏览器截图20240326151344.png

  // 定义日志标识符
  private static readonly LOG_TAG: string = "====MyHttpUtil";

  /**
   * 发起HTTP请求的方法封装.
   * @param url API 地址,若不包含协议头,则自动添加当前应用的主机域名。
   * @param method 请求方法,如 'GET', 'POST' 等。
   * @param params 当HTTP请求方法为GET、OPTIONS、DELETE、TRACE、CONNECT时,此参数用于传递查询字符串;对于POST方法,这些数据会被作为请求体内容。
   * @param showErrorToast 若为 true,在接口业务错误时,向用户显示 toast 提示信息。
   * @returns 成功时返回接口响应数据,请求异常时返回 undefined。
   */
  public static async request(url: string, method: string, extraData: object, showErrorToast: boolean): Promise<any | undefined> {
    try {
      if (!url) {
        return undefined;
      }
      console.info(`${MyHttpUtil.LOG_TAG}: Request started with URL:`, url);

      let request = http.createHttp();
      let options = {
        method: method, //http.RequestMethod.GET 或 http.RequestMethod.POST
        header: {
          'Content-Type': 'application/json'
        },
        readTimeout: 50000, //读取超时时间。单位为毫秒(ms),默认为60000ms。 设置为0表示不会出现超时情况。
        connectTimeout: 50000, //连接超时时间。单位为毫秒(ms),默认为60000ms。
        extraData: extraData,
      } as http.HttpRequestOptions;
      let result = await request.request(url, options);
      result = JSON.parse(JSON.stringify(result))

      console.info(MyHttpUtil.LOG_TAG, 'request end url:', url); //请求结束后
      console.info(MyHttpUtil.LOG_TAG, 'request method:', method);
      console.info(MyHttpUtil.LOG_TAG, 'request extraData:', JSON.stringify(extraData));
      // console.info(MyHttpUtil.LOG, 'request result', JSON.stringify(result, null, 2));
      console.info(MyHttpUtil.LOG_TAG, 'request result', JSON.stringify(result));
      if (result.responseCode == 200) {
        console.info(MyHttpUtil.LOG_TAG, 'request code 200 result', result.result.toString());
        console.info(MyHttpUtil.LOG_TAG, 'request code 200 result', JSON.stringify(JSON.parse(result.result.toString()), null, 2));
        // console.info(MyHttpUtil.LOG, 'request code 200 result',  JSON.parse(result.result.toString()));
      }

      //判断业务异常时,弹出对应的toast
      if (showErrorToast) { //TODO 还需要追加自己业务的判断
        promptAction.showToast({
          message: '这里打印接口业务的message错误信息,根据自己公司接口业务情况封装。',
          duration: 2000,
          bottom: '375lpx'
        })
      }
      return result;
    } catch (error) {
      console.error(MyHttpUtil.LOG_TAG, 'request end url:', url);
      console.error(MyHttpUtil.LOG_TAG, 'request method:', method);
      console.error(MyHttpUtil.LOG_TAG, 'request extraData:', JSON.stringify(extraData));
      console.error(MyHttpUtil.LOG_TAG, 'request', JSON.stringify(error));
    } finally {
      return undefined
    }
  }
}

我们程序员都知道学习开发技术,最先是从语言学起,鸿蒙语言有TS、ArkTS等语法,那么除了这些基础知识之外,其核心技术点有那些呢?下面就用一张整理出的鸿蒙学习路线图表示:

从上面的OpenHarmony技术梳理来看,鸿蒙的学习内容也是很多的。现在全网的鸿蒙学习文档也是非常的少,下面推荐一些:完整内容可在头像页保存,或这qr23.cn/AKFP8k甲助力

内容包含:更多鸿蒙开发应用知识已更新gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md参考前往。

  • ArkTS
  • 声明式ArkUI
  • 多媒体
  • 通信问题
  • 系统移植
  • 系统裁剪
  • FW层的原理
  • 各种开发调试工具
  • 智能设备开发
  • 分布式开发等等。

这些就是对往后开发者的前景分享,希望大家多多点赞关注喔!

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

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

相关文章

centos安装jdk的坑

文章目录 一、安装jdk二、查找jdk的目录三、配置JAVA_HOME 一、安装jdk 我们一般用yum search java | grep jdk查询可以安装的jdk 但是一定要注意如下图&#xff0c;必须知道jdk和jre的区别 yum install java-1.8.0-openjdk-devel.x86_64二、查找jdk的目录 用如下命令 sudo…

kubernetes负载均衡资源-Ingress

一、Ingress概念 1.1 Ingress概念 使用NodePort类型的Service可以将集群内部服务暴露给集群外部客广端,但使用这种类型Service存在如下几个问题。 1、一个端口只能一个服务使用,所有通过NodePort暴露的端口都需要提前规划;2、如果通过NodePort暴露端口过多,后期维护成本太…

快讯|Tubi 在美国电视总观看的份额提升至 1.7%

​在每月一期的 Tubi 快讯中&#xff0c;你将全面及时地获取 Tubi 最新发展动态&#xff0c;欢迎&#x1f31f;星标关注【比图科技】&#xff0c;一起成长变强&#xff01; Tubi 在美国电视总观看的份额提升至 1.7% 根据 Nielsen 最新发布的 The Gauge 报告&#xff0c;2024 年…

监控系统介绍

文章目录 监控系统的分类日志类(logs)调用链类(tracing)度量类(metrics) 监控系统的分层监控系统典型架构采集器TelegrafExportersGrafana-Agent 时序库OpenTSDBInfluxDBTDEngineM3DBVictoriaMetricsTimescaleDBPrometheus 告警引擎数据展示 监控系统的分类 针对不同场景把监控…

网络: 传输层

功能: 将数据从发送到传给接收端 UDP 无连接状态: 知道对端的IP和端口号就直接进行传输, 不需要建立连接不可靠: 没有确认机制, 没有重传机制. 出错不会管面向数据包: 不能够灵活的控制读写数据的次数和数量 发送速度快: 立即发送 报文结构 TCP 面向连接可靠 校验和序列号(按…

基于SwinTransformer和Unet的自适应多类别分割

1、介绍 transformer的基于全局信息的把握&#xff0c;使得对图像的处理成为了可能 swin-transformer在图像分类应用的成功&#xff0c;证明了transformer比传统的cnn卷积网络可以更好的提取图像特征。因为图像分割也是基于特征信息的融合&#xff0c;将不同尺度下的信息拼接…

vivado 使用远程主机和计算群集

使用远程主机和计算群集 概述 AMD Vivado™集成设计环境&#xff08;IDE&#xff09;支持同时并行合成和实现的执行在多个Linux主机上运行。你可以做到这一点通过配置单个主机或指定要在其上启动作业的命令手动执行现有的计算集群。目前&#xff0c;Linux是Vivado唯一支持远程主…

负氧离子监测站:创造健康生活环境

TH-FZ5在蓝天白云之下&#xff0c;那一座座高耸的全彩屏负氧离子监测站&#xff0c;如同一支支科技的绿芽&#xff0c;静静破土而出&#xff0c;为这片土地带来了新的生命力。这些现代化的设备不仅美化了环境&#xff0c;更是我们呼吸健康守护者&#xff0c;它们的存在让我们的…

STM32F10X开发环境的搭建

一、keil软件安装 找到keil软件包&#xff0c;解压缩&#xff0c;找到keil5安装软件&#xff1a; 鼠标右键选择以管理员权限运行。点击next&#xff0c;直到安装结束。 安装完成后在桌面会出现keil5软件图标&#xff1a; 然后再安装相应的芯片支持包&#xff1a;我们用的是stm…

Leetcode - 2580. 统计将重叠区间合并成组的方案数

文章目录 思路AC CODE总结 题目链接&#xff1a;2580. 统计将重叠区间合并成组的方案数 思路 一个区间合并的板子&#xff0c;计算出区间数目之后&#xff0c;每个区间都有放左和放右两种选法&#xff0c;所以最后的答案就是 2 k 2^k 2k。但是需要用c进行二维数组的排序&…

【深度学习】深度学习md笔记总结第2篇:TensorFlow介绍,学习目标【附代码文档】

深度学习笔记完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;深度学习课程&#xff0c;深度学习介绍要求,目标,学习目标,1.1.1 区别,学习目标,学习目标。TensorFlow介绍&#xff0c;2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量…

红外遥控NEC协议

红外遥控技术在我们的日常生活中应用非常广泛&#xff0c;比如我们的遥控器。通过遥控器发射红外光&#xff0c;电视&#xff0c;空调装有红外接收管&#xff0c;负责接受红外光。那么本节将重点介绍其中的原理。 一、工作原理 上图的HS0038便是装在空调&#xff0c;电视上的红…

开放大学2024年春《数控技术 060253》综合大作业参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 单选题 1数控系统的核心是&#xff08; &#xff09; …

腾讯云4核8G12M云服务器一年646元,送3个月时长

2024年腾讯云4核8G服务器租用优惠价格&#xff1a;轻量应用服务器4核8G12M带宽646元15个月&#xff0c;CVM云服务器S5实例优惠价格1437.24元买一年送3个月&#xff0c;腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云4核8G服务器优惠价格 轻…

34.HarmonyOS App DevEco Studio中文界面设置

HarmonyOS App DevEco Studio中文界面设置 重新打开DevEcoStudio,显示中文界面

双碳目标下基于全球模式比较计划CMIP6与区域气候-化学耦合模式WRF-Chem的未来大气污染变化模拟教程

原文链接&#xff1a;双碳目标下基于全球模式比较计划CMIP6与区域气候-化学耦合模式WRF-Chem的未来大气污染变化模拟教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599209&idx7&sn2fb78bcb18e6ec709853a7595d8822d9&chksmfa82058ecdf58c9852bf4…

任何程序员错过这些宝藏接单平台,都会难过好吗?

财富自由何时才能实现&#xff1f;首先&#xff0c;可以很负责地告诉你&#xff1a;安安心心地当一头牛马肯定是不能&#xff01;兢兢业业十几年&#xff0c;归来仍是马喽。 说实在的&#xff0c;这两年经济下行&#xff0c;互联网红利又日渐褪去。前者既争又抢&#xff0c;后…

顶会热点!迁移学习9个结合创新思路,让审稿人眼前一亮

为更灵活、更高效地解决各种复杂和动态变化问题&#xff0c;研究者开始着眼于将迁移学习与其他技术相结合。 这种结合充分发挥了迁移学习的优势&#xff0c;如知识转移、数据效率和加速学习过程等&#xff0c;让模型能够从更高的基准开始学习&#xff0c;更快地适应新任务&…

Vue 3中ref和reactive的区别

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

01使用调试工具

文章目录 前言一、用openocd打开单片机二、利用4444端口向单片机写入hex文件三、利用3333端口和gdb进行调试四、之前我出的问题总结 前言 之前写了一篇关于在linux下搭建stm32标准库的文章后&#xff0c;有一些小伙伴们还是出现了一些奇奇怪怪的错误&#xff0c;这一篇文章就是…