鸿蒙开发(一):使用ArkTS实现HTTP请求功能:GET与POST请求的封装

news/2025/2/23 22:35:08/文章来源:https://www.cnblogs.com/harmonys/p/18733027

🌟 使用ArkTS实现HTTP请求功能:GET与POST请求的封装

在开发鸿蒙应用时,网络请求是一个常见的需求。无论是获取数据还是提交数据,都需要与后端服务器进行交互。在ArkTS中,我们可以使用@ohos.net.http模块来实现HTTP请求。以下是一个封装好的HTTP请求工具类,支持GET和POST请求。

代码解析

1. 导入模块
import http from '@ohos.net.http';
- - 导入了鸿蒙提供的http模块,用于创建和管理HTTP请求。
2. GET请求封装

点击查看代码
export function httpRequestGet(url: string, params?: string) {return httpRequest(url, http.RequestMethod.GET, params);
}
  • 定义了一个httpRequestGet函数,用于发送GET请求。

  • 参数:

    • url:请求的URL。
    • params:可选参数,用于传递查询字符串。
  • 返回值:返回一个Promise,表示请求的结果。

3. POST请求封装

点击查看代码
export function httpRequestPost(url: string, params?: string) {return httpRequest(url, http.RequestMethod.POST, params);
}
  • 定义了一个httpRequestPost函数,用于发送POST请求。

  • 参数:

    • url:请求的URL。
    • params:可选参数,用于传递请求体数据。
  • 返回值:返回一个Promise,表示请求的结果。

4. HTTP请求通用实现

点击查看代码
function httpRequest(url: string, method: http.RequestMethod, params?: string): Promise<string> {let httpRequest = http.createHttp();let responseResult = httpRequest.request(url, {method: method,readTimeout: 10000, // 读取超时时间,可选header: {'Content-Type': 'application/json' // 数据提交方式},connectTimeout: 10000, // 连接超时时间extraData: params});let getjson: string = '';return responseResult.then((value: http.HttpResponse) => {console.log('请求状态 -- > ' + value.responseCode);if (value.responseCode === 200) {console.log("请求成功");let result = `${value.result}`;getjson = result;} else {getjson = '';}return getjson;}).catch(() => {httpRequest.destroy();return '';});
}
  • 定义了一个通用的httpRequest函数,用于处理HTTP请求。

  • 参数:

    • url:请求的URL。
    • method:请求方法,可以是http.RequestMethod.GET或http.RequestMethod.POST。
    • params:可选参数,用于传递查询字符串或请求体数据。
  • 返回值:返回一个Promise,表示请求的结果。

  • 实现:

    • 使用http.createHttp()创建一个HTTP请求对象。
    • 使用httpRequest.request()发送请求,配置请求方法、超时时间、请求头和请求体。
    • 在then回调中,检查响应状态码,如果状态码为200,表示请求成功,返回响应结果;否则返回空字符串。
    • 在catch回调中,捕获异常并销毁HTTP请求对象,返回空字符串。

使用示例

GET请求示例

点击查看代码
let url = 'https://api.example.com/data';
httpRequestGet(url).then((data) => {console.log('GET请求结果: ', data);
});

POST请求示例

点击查看代码
let url = 'https://api.example.com/submit';
let params = JSON.stringify({ key: 'value' });
httpRequestPost(url, params).then((data) => {console.log('POST请求结果: ', data);
});

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

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

相关文章

工程管理(二)

工程模板介绍 DevEco Studio支持多种品类的应用/元服务开发,预置丰富的工程模板,可以根据工程向导轻松创建适应于各类设备的工程,并自动生成对应的代码和资源模板。同时,DevEco Studio还提供了多种编程语言供开发者进行应用/元服务开发,包括ArkTS、JS和C/C++。工程模板支持…

工程管理(一)

APP包结构 在进行应用/元服务开发前,开发者应该掌握应用/元服务的逻辑结构。 应用/元服务发布形态为APP Pack(Application Package),它是由一个或多个HAP(Harmony Ability Package)包以及描述APP Pack属性的pack.info文件组成。 一个HAP在工程目录中对应一个Module,它是…

包和抽象类介绍--java进阶day02

1.package包导包第二点需要注意 a包和b包都存有Student类,c包存有测试类,我们在c中创建Student对象,系统会询问你要哪个包的Student类,并自动帮你导包.在导完a包的学生类后,想要再次导入b包的学生类就不能再像之前那样导了全类名导包 通过带包名将b包重复的学生类导入2.抽…

2025.2.23(二进制等等)

平常我们生活使用的是十进制,在计算机中常用二进制等。 二进制是用0,1表示,逢二进1. 啊啊啊好难表达。 例如2在二进制中为10.哎上图片。。。。除2取余法,哎呀,不管了看图

Deveco Studio下载

Deveco Studio最新版本-下载中心根据自己的操作系统下载合适的版本即可 Windows环境 运行环境要求 为保证DevEco Studio正常运行,建议电脑配置满足如下要求:操作系统:Windows10 64位、Windows11 64位 内存:16GB及以上 硬盘:100GB及以上 分辨率:1280*800像素及以上安装Dev…

第一次作业—软件二次开发

一.项目来源 本次作业的项目来源是https://blog.csdn.net/m0_65636467/article/details/128069045?sharetype=blog&shareId=128069045&sharerefer=APP&sharesource=2301_80676751&sharefrom=link中的第7个C语言超市收款系统 二.运行环境和运行结果 1.运行环境…

《痞子衡嵌入式半月刊》 第 118 期

痞子衡嵌入式半月刊: 第 118 期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《…

【牛客训练记录】牛客周赛 Round 82

训练情况赛后反思 C题没想明白,但是发现了数列一定是不增加的,另外第一次出现的数字,那个位置就必须是那个数字,剩下可能是乘法原理之类的东西吧,但是没做出来 A题 判断字符串第一位和最后一位是否一致即可点击查看代码 #include <bits/stdc++.h> // #define int lo…

【Atcoder训练记录】AtCoder Beginner Contest 394

训练情况赛后反思 没在赛时打的,只做了签到TAT A题 统计字符串中 2 的数量,最后去掉其他的,只输出 2点击查看代码 #include <bits/stdc++.h> // #define int long long #define endl \nusing namespace std;void solve(){string s; cin>>s;int ans = 0;for(int …

DPDK收发包梳理

DPDKeal初始化 内存管理:大页,内存池 驱动开启调试信息 make config T=x86_64-native-linuxapp-gcc export EXTRA_CFLAGS=-O0 -g3 -ggdb make -j8 dpdk通过makefile编译 meson + ninja没学过,太麻烦了,可以参考dpdk17的文档,里面有介绍make编译方式。 https://doc.dpdk.or…

空气流量和空气压力参数解耦系统simulink建模与仿真

1.课题概述空气流量和空气压力参数解耦系统simulink建模与仿真,在许多系统中,空气流量(Q)和压力(P)之间存在耦合关系,这意味着改变一个参数会影响到另一个参数。通过解耦系统解决这种问题,从而提高系统的控制稳定性。2.系统仿真结果 (完整程序运行后无水印)3.核心程序…

【库】Coravel Cache缓存

Coravel 通过使高级应用程序功能(如任务/作业调度、排队、缓存、邮件(以及更多!))易于访问且易于使用,帮助开发人员快速启动并运行 .NET 应用程序。具有简单、富有表现力和直接的语法。Coravel非常简单,通过Rember来保存缓存数据,同时可以设定缓存的时长,然后通过Get来…