头图

前言

之前开源了一个基于http封装的网络请求,具体的可以查看之前的文章,奈何随着Api的升级,目前又推荐了另一个Api形式进行网络通信,也就是基于Remote Communication Kit(远场通信服务) , 只能感叹一声,Api变化的真实迅速啊,有点跟不上官方的节奏了。

image.png

为了便于以后得Api的维护,怎么办?只能再根据 Remote Communication Kit(远场通信服务) 再重新搞一个,毕竟以后的演进都是基于此了。

本文的内容主要是把之前基于http封装的库,修改为当前的Remote Communication Kit(远场通信服务),无非就是通信的方式变了,其他都大差不差。

本文的内容如下:

1、Remote Communication Kit(远场通信服务)简单介绍

2、http库快速使用

3、http库和net库的差异点

4、http库相关总结

一、Remote Communication Kit(远场通信服务)简单介绍

Remote Communication Kit(远场通信服务)是华为提供的HTTP发起数据请求的NAPI封装,应用通过Remote Communication Kit可便捷快速地向服务器发起数据请求。

image.png

使用Remote Communication Kit的主要业务流程如下:

1、应用客户端创建会话。

2、应用客户端发起请求。

3、应用客户端接收请求结果,处理相应业务。

二、http库快速使用

中心仓库地址:https://ohpm.openharmony.cn/#/cn/detail/@abner%2Fhttp

目前封装好的http库已经提交至了中心仓库,大家可以在中心仓库进行查看使用,除了个别地方有差异之外,各个功能完全和net库一样,方便原来使用net的的同学进行无缝衔接。

远程依赖方式使用【推荐】

方式一:在Terminal窗口中,执行如下命令安装三方包,DevEco Studio会自动在工程的oh-package.json5中自动添加三方包依赖。

建议:在使用的模块路径下进行执行命令。

ohpm install @abner/http

方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:

"dependencies": { "@abner/http": "^1.0.0"}

三、http库和net库的差异点

差异点一,拦截器

拦截器不同,net库是基于http进行封装的,http是没有拦截器一说的,为了实现net库的请求拦截,做了一层同步回调处理,而http库是基于Remote Communication Kit(远场通信服务)进行封装的,自带的就有拦截器,可以在全局或者单独请求时进行配置。

全局配置

全局配置可以应对每一个网络请求。

Net.getInstance().init({
      interceptors: [new GlobalInterceptor()]
    })

也可以通过

Net.getInstance().setInterceptors([new GlobalInterceptor()])

单个配置

单个配置仅仅适用于当前的网络请求。

Net.post("/cert/xx")
          .setInterceptor(new TestInterceptor())//单独增加拦截器
            // .setRequestInterceptors() //可以通过这个方法,设置只加载自身拦截器,过滤掉全局
          .setParams({
            "index_type": -1,
            "size": 1,
          })
          .requestString((result) => {
            console.log("===success:" + result)
          }, (err) => {
            console.log("===error:" + err.getMessage())
          })

差异点二,个别属性参数不一样

毕竟Api发生了变化,相关的方法也会有着不一样,比如设置连接超时,读取超时等等,需要采用新的方法进行适配。

四、http库相关总结

和net库有着异曲同工之处,所以,之前如果你使用的是net库,可以无缝衔接,当然了,官方也没有说删除Api http,所以针对Api http也是可以使用的,既然官方已经标注了,大家还是尽量使用Remote Communication Kit(远场通信服务)


程序员一鸣
4 声望0 粉丝