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