OpenHarmony开发者论坛
标题:
httpclient开启高效网络请求之旅
[打印本页]
作者:
润开鸿_坚果
时间:
2024-5-6 18:52
标题:
httpclient开启高效网络请求之旅
[md]**大家好,今天我们用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"
}
]
```
## GET请求示例
```
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 = "你的网络请求";
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%')
}
}
```
## 效果
![image-20240506183502618](
https://luckly007.oss-cn-beijing ... 240506183502618.png
)
**可以看到数据是拿到了,接下来,如何处理数据,就看各位的了。**
## 参考
[
https://gitee.com/openharmony-tpc/httpclient
](
https://gitee.com/openharmony-tpc/httpclient
)
## 关于坚果派
**坚果派由坚果等人创建,团队拥有12个华为HDE,以及若干其他领域的三十余位万粉博主运营。专注于分享的技术包括HarmonyOS/OpenHarmony,ArkUI-X,元服务,服务卡片,华为自研语言,AI、BlueOS操作系统、团队成员聚集在北京,上海,南京,深圳,广州,宁夏等地。**
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5