前言
之前开源了一个基于http封装的网络请求,具体的可以查看之前的文章,奈何随着Api的升级,目前又推荐了另一个Api形式进行网络通信,也就是基于Remote Communication Kit(远场通信服务),只能感叹一声,Api变化的真实迅速啊,有点跟不上官方的节奏了。
为了便于以后得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可便捷快速地向服务器发起数据请求。
使用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 /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(远场通信服务)。