【软通动力】HarmonyOS三方件开发指南(3)-AsyncHttpHarmony组件 原创 精华
1. AsyncHttpHarmony功能介绍
1.1. 组件介绍
在做HarmonyOS开发过程中,用java原生的HttpsURLConnection实现网络请求很难高效的达到预期效果。我们需要高效的处理数据解析,更加快捷的实现UI线程更新,这里基于方网络框架AsyncHttpClient二次封装,更加高效实现网络请求及数据处理。同时HarmonyOS为我们提供了TaskDispatcher类派发同步任务,达到更新UI的效果。
1.2. TV模拟器上运行效果
请求前:
点击get请求之后:
2. AsyncHttpHarmony使用方法
2.1. 为应用添加httplibrary-debug.har包依赖
在应用模块中调用HAR,常用的添加依赖的方式包括如下两种。
Ø 方式一:依赖本地HAR
第一步:将httplibrary-debug.har复制到entry\libs目录下即可(由于build.gradle中已经依赖libs目录下的*.har,因此不需要再做修改)。
查看工程目录中build.gradle下的*.har是否存在:
第二步:需要添加外部依赖实现Header类的引入,引入方式如下图,引入完之后同步下即可可以使用。
2.2. 为应用添加网络权限,config.json文件部分代码如下:
以上操作无误之后就可以进行编码了!
3. AsyncHttpHarmony开发实现
3.1. 主页面的布局文件
定义一个Text文本用来显示请求返回的数据,一个text实现请求点击事件
3.2. MainAbilitySlice代码如下
核心代码是initListener,其中声明了一个 AsyncHttpClient对象,设置请求参数,调用get方法获取ulr返回结果,然后通过TaskDispatcher类派发同步任务达到更新UI的效果,代码如下:
项目源代码地址:https://github.com/isoftstone-dev/Http-Async-HarmonyOS
欢迎交流:HWIS-HOS@isoftstone.com
学习了
您好,请假下,我在完成请求获取到数据之后,不能直接setText(),为什么?
请求数据在子线程中获取,需要子线程通知主线程匀修改UI,欢迎有问题随时留言。
亲,做好文章排版能够获方便读者阅读,我们也在改进编辑器产品体验。感谢分享!
// 通知主线程更新UI
getUITaskDispatcher().asyncDispatch(new Runnable() {
@Override
public void run() {
// 这里具体业务Text文本显示请求数据
tvResult.setText(responseString);
}
});
这个方法通知修改UI
这个网络请求框架支持post、put请求方式不?
支持,除了您提到的常用post、put请求方式,此外还支持patch、delete、get等请求方式。
不错啊,666
感谢老师关注,还得继续学习
感谢宝贵意见,后续改进
受教受教
学习了
后续还会有更多文章发布,欢迎常来,相互学习
干货满满
感谢,欢迎常来
我想问一下如何动态将Image的图片动态设置成xml矢量图标
老师您好,想请教一下请求的时候如何发送JSON格式数据,头部数据headers又要怎么设置呢?
您好,目前不支持png转svg矢量图,谢谢!
发送json数据步骤
1:实例化JsonObject对象,给其对象放入数据。
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name","name");
jsonObject.addProperty("password","123456");
2:实例化词ByteArrayEntity对象,将json和Header添加进去。
entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"));
entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
3,post请求,将包含有json和header的实体ByteArrayEntity传进去。
client.post(MainAbilitySlice.this,url,entity,"application/json", new JsonHttpResponseHandler(){...}
太感谢了,已解决