当前位置: 首页 > news >正文

鸿蒙HarmonyOS NEXT中网络库的选择

在Android开发中常见的网络请求有okhttp3、retrofit2、Volley、HttpUrlConnection等。

那么在鸿蒙(HarmOS)单框架开发中常见的网络请求有哪些?

@ohos.net.http 和 @hms.collaboration.rcp 是官方内置的网络请求方式,除此之外Axios是由前端迁移到鸿蒙端的网络库。它们各有优缺点,适用于不同的场景。

Axios、http、rcp介绍

Axios

Axios ,是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中。本库基于Axios 原库v1.3.4版本进行适配,使其可以运行在 OpenHarmony,并沿用其现有用法和特性。地址:https://gitee.com/openharmony-sig/ohos_axios

@ohos.net.http

@ohos.net.http模块是鸿蒙操作系统(HarmonyOS)中用于进行HTTP数据请求的一个功能模块。它允许应用通过HTTP协议发起数据请求,支持多种常见的HTTP方法,包括GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE和CONNECT。

@hms.collaboration.rcp

Remote Communication Kit中的@hms.collaboration.rcp(后续简称RCP)指的是远程通信平台(remote communication platform),RCP提供了网络数据请求功能,相较于Network Kit中HTTP请求能力,RCP更具易用性,且拥有更多的功能。在开发过程中,如果有些场景使用Network Kit中HTTP请求能力达不到预期或无法实现,那么就可以尝试使用RCP中的数据请求功能来实现。

Axios、http、rcp区别

Axios优缺点

优点:

  • http get、post、delete、put、patch 请求
  • Promise API
  • request 和 response 拦截器
  • 转换 request 和 response 的 data 数据
  • 自动转换 JSON data 数据
  • 支持设置代理
  • 支持上传下载文件

缺点:

  • 网络请求不可取消
  • 非官方库需要依赖社区

http、rcp官方对比区别

RCP主要功能

实现基础的网络请求

在创建session会话后,通过创建请求对象并传入第二个参数且指定为PATCH,然后通过session.fetch()发起请求即可。

  1. 导入rcp模块。
  2. 创建headers,设置可接受的数据内容的类型为json字符串;创建modifiedContent,传入想要修改的内容。
  3. 调用rcp.createSession()创建通信会话对象session。
  4. 使用new rcp.Request()方法创建请求对象req。
  5. 调用session.fetch()方法发起请求。
  6. 获取响应结果。
// 定义请求头
let headers: rcp.RequestHeaders = {
  'accept': 'application/json'
};
// 定义要修改的内容
let modifiedContent: UserInfo = {
  'userName': 'xxxxxx'
};
const securityConfig: rcp.SecurityConfiguration = {
  tlsOptions: {
    tlsVersion: 'TlsV1.3'
  }
};
// 创建通信会话对象
const session = rcp.createSession({ requestConfiguration: { security: securityConfig } });
// 定义请求对象rep
let req = new rcp.Request('http://example.com/fetch', 'PATCH', headers, modifiedContent);
// 发起请求
session.fetch(req).then((response) => {
  Logger.info(`Request succeeded, message is ${JSON.stringify(response)}`);
}).catch((err: BusinessError) => {
  Logger.error(`err: err code is ${err.code}, err message is ${JSON.stringify(err)}`);
});

实现对DNS的定制设置

通过RCP模块,能够实现对DNS的定制设置。开发人员可以按自己的需要配置DNS,包括自定义DNS服务器、自定义静态DNS规则和配置HTTPS上的DNS,都可以通过DnsConfiguration设置。DnsConfiguration中可设置dnsRules、dnsOverHttps。

实现多表单提交

在创建session会话后,通过new rcp.Request()的第四个参数传入MultipartForm,然后通过rcp.fetch()发起POST请求将多个表单数据携带上传至服务端。

  1. 导入rcp模块。
  2. 设置请求头类型、配置HTTP请求的超时值、HTTP请求中包含的cookie和设置传输数据范围。
  3. 调用rcp.createSession()创建通信会话对象。
  4. 通过new rcp.MultipartForm()设置多表单数据。
  5. 使用new rcp.Request()创建请求对象,调用session.fetch()方法发起请求。
  6. 处理响应结果。

拦截器的定义和使用

  1. 导入rcp模块。
  2. 定义RequestUrlChangeInterceptor拦截器和ResponseHeaderRemoveInterceptor拦截器。
  3. 在intercept()方法中实现对请求/响应的修改逻辑。

总结

RCP提供了网络数据请求功能,相较于Network Kit中HTTP请求能力,RCP更具易用性;相较于Axios中,更加贴近HarmonyOS NEXT系统需求,而且官方也建议使用RCP网络请求框架,所以建议大家使用RCP或者基于RCP自研。

相关文章:

  • pytorch学习(b站小土堆学习)
  • webgl知识点---类型化数组
  • Odoo Tree视图增加自定义按钮并执行方法的详细解析
  • 分布式数据库的数据控制与锁机制详解
  • USB 虚拟串口改名——更新驱动程序篇
  • JVM基础原理
  • 【计算机网络】HTTP与HTTPS
  • Ubuntu安装指定ruby版本
  • 困于环中的机器人
  • 【2025 年华为杯广东工业大学程序设计竞赛(同步赛)】部分题解
  • JavaScript函数知识点总结
  • 【力扣hot100题】(027)两数相加
  • CST学习笔记(三)MATLAB与CST联合仿真-远场数据批量导出
  • 【学Rust写CAD】22 双圆径向渐变的结构体(two_circle_radial_gradient.rs)
  • 现代简洁线条视觉冲击几何风psai无衬线英文字体安装包 Adobe Fonts – Transducer Font Family
  • RK3588使用笔记:ubuntu/麒麟系统功能测试程序
  • 博客学术汇测试报告
  • Mamba4D阅读
  • 人工智能大模型-数据预处理-文本数据预处理-图像数据预处理
  • HCIA-数据通信datacom认证
  • 做暧免费观看网站/广州排名推广
  • 国家级门户网站有哪些/seo关键词布局
  • 哪家企业网站做的好/百度账号中心
  • 禹州网站建设/网站运维
  • 没有排名的网站怎么做/by72777最新域名查询
  • 网站开发形式有哪些/怎样做网站推广