【HarmonyOS】元服务服务卡片网络开发
一、API6服务卡片Java代码中如何进行网络请求?
API6服务卡片基于FormAbility,一般元服务默认工程中的FormAbility就是MainAbility。由于FormAbility是Java语言编写的,可以使okhttp进行网络请求相关的开发。
1、添加依赖:
首先在entry的build.gradle中添加如下依赖:
Okhttp相关的使用可以参考Okhttp官网文档,链接如下:Overview - OkHttp (square.github.io)
2、使用方法,这边以Get请求为例,说明一下Okhttp的简单用法:
初始化OkhttpClient和request:
a、同步请求:
b、异步请求:
我们通过使用okhttputils工具类库可以进一步简化请求代码:
Okhttputils使用说明:okhttputils: 对okhttp的封装类 (gitee.com)
依赖引用:
同步请求:
异步请求:
二、如何通过网络请求数据进行服务卡片初始化?
由于我们是FormAbility的onCreateForm中完成卡片的创建,下面以创建卡片为例,说明该如何完成网络数据创建卡片。
如官网的示例中我们需要在onCreateForm中创建ProviderFormInfo,所以我们可以将通过网络请求获取的数据传入FormBindingData中,完成卡片的的初始化。
需要注意的是,在初始化卡片的时候,需要使用的Okhttp进行同步请求,请求完成后将数据传入FormBindingData,以下代码使用OkHttpUtils编写,,封装一个getData方法返回FormBindingData对象:
也可以通过ZSONObject获取java bean后,创建FormBindingData对象,如下:
创建FormBindingData后传入formInfo完成卡片初始化:
三、如何在卡片触发事件和定时定点刷新时通过网络请求刷新卡片内容?
卡片的点击事件会在onTriggerFormEvent中触发,定时定点刷新需要在onUpdateform中完成,所有的更新卡片的操作都是通过updateForm(formId, formBindingData)方法完成的。所以,同样可以使用getData方法获取formBindingData后就可以进行卡片内容的刷新。
四、如何加载网络图片?
加载网络图片,官网是通过内存图片的方式进行加载的,参考链接如下:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-widget-provider-js-0000001150602175#section2608945203212
同样我们可以使用okhttp获取网络图片的bytes内容,然后通过bytes数据可以用以下方法获取
然后在onCreateForm中参考官网方法进行初始化:
定时刷新和点击触发刷新同理,就不再赘述了。