大家好,今天我们用httpclient实现一个网络请求,之前我们用的最多的就是原生,或者是axios,今天我们一起来看一下第三种实现方式。
httpclient简介
HTTP是现代应用程序通过网络交换数据和媒体的的主要方式。httpclient是OpenHarmony 里一个高效执行的HTTP客户端,使用它可使您的内容加载更快,并节省您的流量。httpclient以人们耳熟能详的OKHTTP为基础,整合android-async-http,AutobahnAndroid,OkGo等库的功能特性,致力于在OpenHarmony 打造一款高效易用,功能全面的网络请求库。当前版本的httpclient依托系统提供的网络请求能力和上传下载能力,在此基础上进行拓展开发。
1.支持全局配置调试开关,超时时间,公共请求头和请求参数等,支持链式调用。
2.自定义任务调度器维护任务队列处理同步/异步请求。
3.支持tag取消请求。
4.支持设置自定义拦截器。
5.支持重定向。
6.支持客户端解压缩。
7.支持文件上传下载。
8.支持cookie管理。
9.支持对请求内容加解密。
10.支持自定义请求。
11.支持身份认证。
12.支持证书校验。
13.支持响应缓存。
14.支持请求配置responseData属性。
15.支持设置请求优先级。
16.支持证书锁定。
ohpm install @ohos/httpclient
使用之前记得添加网络权限
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
},
{
"name": "ohos.permission.GET_NETWORK_INFO"
}
]
import { HttpClient, Request, Logger, HttpCall, Response, TimeUnit } from '@ohos/httpclient';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct SecondPage {
@State message: string = 'Hello World';
@State status: string = "";
@State content: string = "";
echoServer: string = "你的URL";
client: HttpClient = new HttpClient
.Builder()
.setConnectTimeout(10, TimeUnit.SECONDS)
.setReadTimeout(10, TimeUnit.SECONDS)
.build();
aboutToAppear(): void {
this.getdate()
}
getdate() {
// 配置请求参数
let request = new Request.Builder()
.get(this.echoServer)
.addHeader("Content-Type", "application/json")
.params("testKey1", "testValue1")
.params("testKey2", "testValue2")
.build();
// 发起请求
this.client.newCall(request).enqueue((result: Response) => {
if (result) {
this.status = result.responseCode.toString();
}
if (result.result) {
this.content = result.result;
} else {
this.content = JSON.stringify(result);
}
Logger.info("onComplete -> Status : " + this.status);
Logger.info("onComplete -> Content : " + JSON.stringify(this.content));
}, (error: BusinessError) => {
this.status = error.code.toString();
this.content = JSON.stringify(error.data);
Logger.info("onError -> Error : " + this.content);
});
}
build() {
Row() {
Column() {
Text(this.content)
.fontSize(30)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}
可以看到数据是拿到了,接下来,如何处理数据,就看各位的了。
https://gitee.com/openharmony-tpc/httpclient
坚果派由坚果等人创建,团队拥有12个华为HDE,以及若干其他领域的三十余位万粉博主运营。专注于分享的技术包括HarmonyOS/OpenHarmony,ArkUI-X,元服务,服务卡片,华为自研语言,AI、BlueOS操作系统、团队成员聚集在北京,上海,南京,深圳,广州,宁夏等地。
坚果派由坚果等人联合创建,团队拥有12个华为HDE,以及若干其他领域的三十余位万粉博主运营。专注于研究的技术包括HarmonyOS/OpenHarmony,华为自研语言,AI、BlueOS操作系统等。主营业务是面向国内外客户提供新一代信息技术为核心的产品、解决方案和服务。团队聚焦“鸿蒙原生应用”、“智能物联”和“AI赋能”、“人工智能”四大业务领域,依托华为开发者专家等强大的技术团队,以及涵盖需求、开发、测试、运维于一体的综合服务体系,赋能文旅、媒体、社交、家居、消费电子等行业客户,满足客户数字化升级转型的需求,帮助客户实现价值提升。
华为开发者专家(HUAWEI Developer Experts)、OpenHarmony布道师、华为跨平台框架布道师、OpenHarmony MVP、OpenHarmony校源行开源大使、中国计算机学会CCF专业会员、鸿蒙原生应用讲师、2023年OpenHarmony应用创新赛导师、RISC-V+OpenHarmony应用创意赛导师、2023,2024开源之夏导师、InfoQ签约作者,CSDN博客专家,51CTO博客专家,阿里云博客专家,电子发烧友社区之星,开发者学堂”十佳“讲师。OpenHarmony三方库贡献者,上架应用12款。上架三方库9款、作品入围2024鸿蒙创新赛曾受邀参加2022,2023HDC大会。以及作为华为鸿蒙生态学堂讲师在南京,上海等城市参与授课。在北京航空航天大学,北京师范大学,西北工业大学、哈尔滨工程大学,南京信息科技大学,等十余所高校开展鸿蒙/开源讲座。