0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-27 22:32 次阅读

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开发更多内容↓点击HarmonyOSOpenHarmony技术
鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或+mau123789学习,是v喔

搜狗高速浏览器截图20240326151450.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
    }
  }
}
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HarmonyOS
    +关注

    关注

    79

    文章

    1966

    浏览量

    29955
  • OpenHarmony
    +关注

    关注

    25

    文章

    3635

    浏览量

    16050
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    188

    浏览量

    4358
收藏 人收藏

    评论

    相关推荐

    鸿蒙原生应用开发-网络管理HTTP数据请求

    : \' + JSON.stringify(header)); }); httpRequest.request( // 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。
    发表于 03-29 17:51

    基于STM32封装HTTP请求知识

    通过封装http头,向服务器发送get请求,通过get请求上传数据,并获取返回值
    发表于 08-05 06:01

    鸿蒙JS开发接口请求loading怎么解决?

    鸿蒙JS开发接口请求loading?
    发表于 05-10 10:24

    鸿蒙应用开发请求不到数据是为什么?

    鸿蒙应用开发请求不到数据
    发表于 06-15 11:04

    鸿蒙 OS 应用开发初体验

    的操作系统平台和开发框架。HarmonyOS 的目标是实现跨设备的无缝协同和高性能。 DevEco Studio 对标 Android Studio,开发鸿蒙 OS 应用的 IDE。
    发表于 11-02 19:38

    http请求 get post

    Http请求 packagewzh.Http; importjava.io.BufferedReader; importjava.io.IOException
    发表于 09-27 10:36 16次下载

    HTTP请求方式有哪些

    相信大家在不管是学习、工作或者面试中,肯定会碰到或被问到 HTTP  相关的知识。今天我们来聊聊有哪些 HTTP 请求方式,以及区别吧! 小伙伴们写过接口或者使用过网页开发者模式的,肯
    的头像 发表于 09-02 09:21 4542次阅读

    修改应用名称以及http请求

    修改应用名称以及http请求
    的头像 发表于 12-07 08:48 1370次阅读
    修改应用名称以及<b class='flag-5'>http</b><b class='flag-5'>请求</b>

    HTTP请求报文:GET和POST的区别

    GET 和 POST 其实都是 HTTP请求方法。除了这 2 个请求方法之外,HTTP 还有 HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS 这 6 个
    发表于 04-10 10:11 2198次阅读

    【EsDA 应用】快速实现串口转HTTP请求

    本文将基于EsDA开发套件快速实现将串口数据转换为HTTP请求的应用开发,实现串口设备与网络服务的互联互通,提供便捷和高效的串口数据转换功能。项目简介
    的头像 发表于 11-09 08:25 787次阅读
    【EsDA 应用】快速实现串口转<b class='flag-5'>HTTP</b><b class='flag-5'>请求</b>

    鸿蒙OS开发实例:【工具封装-emitter组件间通信】

    `MyEmitterUtil` 是一个针对 HarmonyOS 的事件驱动编程封装,主要用于组件间的通信和数据传递。
    的头像 发表于 03-27 22:13 582次阅读

    鸿蒙OS开发实例:【工具封装-页面路由】

    import common from '@ohos.app.ability.common'; import router from '@ohos.router'封装app内的页面之间跳转、app与app之间的跳转工具
    的头像 发表于 03-28 16:16 829次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>工具</b><b class='flag-5'>类</b><b class='flag-5'>封装</b>-页面路由】

    鸿蒙OS开发实例:【窥探网络请求

    HarmonyOS 平台中使用网络请求,需要引入 "@ohos.net.http", 并且需要在 module.json5 文件中申请网络权限, 即 “ohos.permission.INTERNET” 本篇文章将尝试使用 @ohos.net.
    的头像 发表于 04-01 16:11 708次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【窥探网络<b class='flag-5'>请求</b>】

    鸿蒙OS开发实战:【网络管理HTTP数据请求

    应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
    的头像 发表于 04-01 16:31 648次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b>实战:【网络管理<b class='flag-5'>HTTP</b>数据<b class='flag-5'>请求</b>】

    鸿蒙OS开发实例:【HarmonyHttpClient】网络框架

    鸿蒙上使用的Http网络框架,里面包含纯Java实现的HttpNet,类似okhttp使用,支持同步和异步两种请求方式;还有鸿蒙版retrofit,和Android版Retrofit相
    的头像 发表于 04-12 16:58 791次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【HarmonyHttpClient】网络框架