您现在的位置是:亿华云 > 应用开发
鸿蒙HarmonyOS三方件开发指南(3)-AsyncHttpHarmony组件
亿华云2025-10-08 21:01:47【应用开发】4人已围观
简介想了解更多内容,请访问:和华为官方合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz1. AsyncHttpHarmony功能介绍1.1. 组件介绍在做Harmony
想了解更多内容,鸿蒙请访问:
和华为官方合作共建的开件鸿蒙技术社区
https://harmonyos.51cto.com/#zz
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文件部分代码如下:
"reqPermissions": [ { "name": "ohos.permission.INTERNET", "reason": "", "usedScene": { "ability": [ "com.example.ohosdemo.MainAbility", "com.example.ohosdemo.slice.MainAbilitySlice" ], "when": "always" } },以上操作无误之后就可以进行编码了!
3. AsyncHttpHarmony开发实现
3.1. 主页面的布局文件
定义一个Text文本用来显示请求返回的数据,一个text实现请求点击事件
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:orientation="vertical"> <Text ohos:id="$+id:tvResult" ohos:height="match_content" ohos:width="match_content" ohos:background_element="$graphic:background_ability_main" ohos:layout_alignment="horizontal_center" ohos:text="数据显示" ohos:text_size="50" ohos:top_margin="180vp" /> <Text ohos:id="$+id:tvRequest" ohos:height="match_content" ohos:width="match_content" ohos:background_element="$graphic:background_ability_main" ohos:layout_alignment="horizontal_center" ohos:text="get请求" ohos:text_size="50" ohos:top_margin="80vp" /> </DirectionalLayout>3.2. MainAbilitySlice代码如下
核心代码是initListener,其中声明了一个 AsyncHttpClient对象,设置请求参数,调用get方法获取ulr返回结果,b2b供应网然后通过TaskDispatcher类派发同步任务达到更新UI的效果,代码如下:
package com.huawei.asynchttpharmonyos.slice; import com.example.httplibrary.utils.AsyncHttpClient; import com.example.httplibrary.utils.JsonHttpResponseHandler; import com.example.httplibrary.utils.RequestParams; import com.huawei.asynchttpharmonyos.ResourceTable; import cz.msebera.android.httpclient.Header; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.components.Component; import ohos.agp.components.Text; import ohos.hiviewdfx.HiLog; import ohos.hiviewdfx.HiLogLabel; public class MainAbilitySlice extends AbilitySlice { private Text tvRequest,tvResult; private static final String TAG = "MainAbilitySlice"; private static final HiLogLabel label=new HiLogLabel(HiLog.DEBUG,0x00100,"async-http"); @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); initView(); initListener(); } private void initView() { tvResult = (Text) findComponentById(ResourceTable.Id_tvResult); tvRequest = (Text) findComponentById(ResourceTable.Id_tvRequest); } private void initListener() { tvRequest.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { String url="https://apis.juhe.cn/simpleWeather/query"; String key="32becf485f7f174d4385957b62f28f61"; //这里获取AsyncHttpClient实例, 这个类提供了get post delete put 请求对外的接口方法 AsyncHttpClient client=new AsyncHttpClient(); //这里是我们包装参数的实体类 RequestParams params=new RequestParams(); params.put("city","西安"); params.put("key",key); /这里是实现get请求的方,JsonHttpResponseHandler会重写请求成功的onSuccess和onFailure两个方法,两个方法内部做具体业务逻辑 client.get(url,params, new JsonHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { super.onSuccess(statusCode, headers, responseString); HiLog.error(label,"zel-onSuccess:"+responseString,responseString); // 通知主线程更新UI getUITaskDispatcher().asyncDispatch(new Runnable() { @Override public void run() { // 这里具体业务Text文本显示请求数据 tvResult.setText(responseString); } }); } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { super.onFailure(statusCode, headers, responseString, throwable); HiLog.error(label,"zel-onFailure:"+responseString,responseString); } }); } }); } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); } }项目源代码地址:https://github.com/isoftstone-dev/Http-Async-HarmonyOS
©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任
想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#zz
很赞哦!(9)
相关文章
- 在更换域名后,并不是就万事大吉了,我们需要将旧域名做301重定向到新域名上,转移旧域名的权重到新域名上。
- JavaScript For 循环:使用 for,in 循环的技巧你会了吗
- 分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- Python自动化办公之Excel拆分并自动发邮件
- CNAME:对应解析的记录值为域名地址
- 许多SQL性能问题来自于“不必要的强制性工作”
- MySQL树状数据的数据库设计
- 「查缺补漏」,DDD 核心概念梳理
- 第六:这个圈子里的域名确实是赚钱的一些大玩家,至于小米农,有多少赚钱?几乎没有,也就是说,轿子里只有一个人,而且大多数人都抬着轿子。
- 值得收藏!这是SQL数据库优化的六种方法