鸿蒙HarmonyOS三方件开发指南(3)-AsyncHttpHarmony组件

人工智能2025-11-05 06:43:54625

想了解更多内容,鸿蒙请访问:

和华为官方合作共建的开件鸿蒙技术社区

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,开件常用的鸿蒙添加依赖的方式包括如下两种。云南idc服务商

Ø 方式一:依赖本地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返回结果,源码库然后通过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

-->
本文地址:http://www.bzuk.cn/news/042b33999618.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

学习如何以dpi大小设置教程(让你的设计更加精确和专业化)

MySQL引擎特性:InnoDB同步机制

各大框架都在使用的Unsafe类,到底有多神奇?

用Java代码对字符串进行切割,这么写性能提升两倍

办公电脑教程(提升办公效率,掌握Windows操作技巧)

vivo 短视频推荐去重服务的设计实践

Oracle系统数据复制技术?这里为你详解一下~

离开页面时,你知道如何可靠地发送一个 HTTP 请求吗?

友情链接

滇ICP备2023006006号-33