1.原始的网络访问,再加上多线程,会使程序臃肿

网络请求在现代的应用开发中必不可少,我们熟知的网络请求框架真不少,像HttpCient、HttpCient还有volley等,它们确实方便但鸿蒙还不能使用它们,还好我们有HttpURLConnection。使用其进行网络请求的示例代码,如下图所示(不用仔细研究):

相信你想说:HttpURLConnection虽略有繁琐,但能用。然而,这并不是我们要处理网络访问的全部。因为网络操作耗时及不稳定性,使得我们必须在子线程中进行上述代码的工作,等到网络请求有响应结果了,我们又需要回到主线程更新UI,这又使得我们的程序又胖了一圈。如果请求,请求再多一点呢?我们的程序就胖了好几圈…

2.将多线程与网络访问封装,为程序瘦身

我们希望的网络请求是这样的:隐藏网络访问细节;优雅处理UI更新。
基于以上两点,我封装了一套Http请求的工具类,最终的网络访问会变成,如下所示:

        ZZRHttp.get(url, new ZZRCallBack.CallBackString() {@Overridepublic void onFailure(int code, String errorMessage) {//http访问出错,此部分在主线程中工作,可以更新UI等操做。}@Overridepublic void onResponse(String response) {//http访问成功,此部分在主线程中工作,可以更新UI等操作。}});

代码解析:此get方法能够在子线程中完成基于http网络访问, 当访问成功或者失败,就会分别回调onResponse或onFailure方法,这两个方法是在主线程中完成回调的,所以是可以更新UI的。
我已将这套Http工具类的源代码,开源上传至github,地址如下:
https://github.com/zzrv5/ZZRHttp

3.鸿蒙App Http请求操作步骤:

3.1 添加网络访问权限

在config.json文件中的module中添加,网络访问权限,代码如下所示:

 "module": {"reqPermissions": [{"name":"ohos.permission.INTERNET"}],...

3.2 设置访问模式

鸿蒙的默认是https访问模式,如果您的请求网址是http开头的,请在config.json文件中的deviceConfig下,添加如下设置:

    "deviceConfig": {"default": {"network": {"cleartextTraffic": true}}},

3.3 添加工具类(ZZRHttp)依赖

在build.gradle文件的dependencies中,添加如下配置,引入我的工具类(ZZRhttp):

   dependencies {    implementation 'com.zzrv5.zzrhttp:ZZRHttp:1.0.1'...}

3.4进行网络访问

就是这么简单,代码如下:

    ZZRHttp.get(url, new ZZRCallBack.CallBackString() {@Overridepublic void onFailure(int code, String errorMessage) {//http访问出错,此部分在主线程中工作,可以更新UI等操做。}@Overridepublic void onResponse(String response) {//http访问成功,此部分在主线程中工作,可以更新UI等操作。}});

关于我

我是ZZR老师,为什么叫ZZR老师,是因为ZZR是我名字的缩写,在B站、51CTO、今日头条。搜索:ZZR老师 ,都可以找到我的教学视频。

鸿蒙(HarmonyOS)环境下,如何优雅地进行Http访问相关推荐

  1. 鸿蒙HarmonyOS环境搭建与HelloWrold应用运行

    场景 目前,鸿蒙2.0已经开放公测,不少华为用户已经开始上手体验了. 首先是开发工具,来到HarmonyOS Developer开发者官网 https://developer.harmonyos.co ...

  2. 《ESP32 学习笔记》 之Arduino环境下 使用DAC模拟输出(是真的DAC哦!)完成两路呼吸灯

    在 Arduino 环境下经常使用的 analogWrite(PIN, arg) 语法并不是真正的DAC模拟输出,也只是1kHZ的PWM 波模拟而成! 支持DAC功能的引脚请查看:引脚定义 本次ESP ...

  3. Fluid — 云原生环境下的高效“数据物流系统”

    作者 | 顾荣  南京大学 PASALab (注:本文基于作者公开演讲报告内容整理完成) _来源 | _阿里巴巴云原生公众号 得益于计算成本低.易于扩展.部署便捷.运维高效等多方面的优势,云计算平台吸 ...

  4. Windows环境下,如何在Docker里运行SAP UI5应用

    本文面向的读者是对Docker技术有一些基本概念,但因为没有测试环境,所以没有动手操作过的朋友们. 最近Jerry因为要做一个新的SAP云产品开发,得搭各种开发环境,其中之一就是Docker. Jer ...

  5. Linux系统编程及应用——ubuntu环境下

    Linux系统编程及应用--ubuntu环境下 程序由业务逻辑和系统访问两部分构成的.其中,业务逻辑是根据业务需求,按照设计好的逻辑规则,处理信息,与系统(平台)无关的:而系统访问则是利用操作系统所提 ...

  6. Windows 环境下搭建VTS

    VTS windows 环境下搭建 测试vts 需要可以访问谷歌网站, 工具: Python2.7  (Python3 无法配置成功,配置时会报各种错误) Windows 7 JDK  版本1.8以上 ...

  7. 0557-6.1.0-Kerberos环境下SQL客户端DBeaver配置异常分析

    1 文档编写目的 参考Fayson前面的文章<0469-如何使用DBeaver访问Kerberos环境下的Impala>,环境变量也配置了,krb5.conf文件也准备好了,但在使用SQL ...

  8. 【博客468】ECMP(等价多路径)环境下链路偶发故障排查

    ECMP(等价多路径)环境下链路偶发故障排查 场景: 访问某一个IP,能ping通,但是tcp有时通 问题: ping和tcp协议走的网络路径是一样的吗 答案: 不一定,走的网络路径还是有可能是不同的 ...

  9. 【鸿蒙 HarmonyOS】创建 Java 语言 HarmonyOS 手机应用 ( 首次进入 DevEco Studio 配置环境 | 创建 Java 手机工程 | 鸿蒙工程代码目录简介 )

    文章目录 一.首次进入 DevEco Studio 配置环境 二.创建 Java 手机工程 三.鸿蒙工程代码目录简介 鸿蒙 HarmonyOS 开发环境 DevEco Studio 安装 , 参考博客 ...

最新文章

  1. 咏南CS插件开发框架也可BS方式部署
  2. TCP/IP详解--学习笔记(1)-基本概念
  3. KDD 2020捷报 | 第四范式斩获KDD Cup全球冠军 AutoML挑战赛圆满落幕
  4. mysql经常问到的面试题_20道BAT面试官最喜欢问的JVM+MySQL面试题(含答案解析)...
  5. 苹果亚马逊同一天公布无损音质服务、 Google与Flutter、Snap 的 AR 战事等|Decode the Week...
  6. 他们曾是别人眼中的笑话,最后却都成了神话
  7. uva 11387——The 3-Regular Graph
  8. Windows7修改hosts提示:您没有权限在此位置中保存文件
  9. 系统设计说明书案例_VAV系统设计要点与案例分析
  10. Js+XML 操作 [ZT]
  11. 常用python内置函数_python常用内置函数
  12. vue上传图片文件到服务器,vue如何将quill图片上传到服务器
  13. Struts 2中文件上传
  14. 2021年MathorCup高校数学建模挑战赛——大数据竞赛赛道A -思路分享
  15. 网络+系统+ITSM工具Network+system+ITSM tool
  16. JAVA中分号用中文还是英文_【英文中有分号(;)吗?怎么用呢?】作业帮
  17. Drug Discov. Today | 药物发现中的先进机器学习技术
  18. python查看微信撤回消息怎么弄_微信撤回消息怎么查?Python3步啥都知道了!
  19. 第3-5课:24 点计算器
  20. 生成拼音语料及拼音识别转换成中文

热门文章

  1. MAC and HMAC
  2. 自动驾驶之路面缺陷检测 道路缺陷检测
  3. Win10提示无法更新安装,怎么解决
  4. GDAL的几个不错的函数
  5. uniapp:插件Luch_request 修改全局默认配置(转载请标明原创)
  6. VMWare 虚拟机软件的安装和使用(亲测可以使用)
  7. linux kvm安装windows,Debian Linux系统上的虚拟机KVM(完美安装windows系统)
  8. 如何在mac上录屏(并且录制到屏幕内部声音)完美解决方案
  9. 开关电源EMI实际整改经验大全
  10. Qlik Sense 临时处理表数据详解(Resident)