鸿蒙(HarmonyOS)环境下,如何优雅地进行Http访问
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访问相关推荐
- 鸿蒙HarmonyOS环境搭建与HelloWrold应用运行
场景 目前,鸿蒙2.0已经开放公测,不少华为用户已经开始上手体验了. 首先是开发工具,来到HarmonyOS Developer开发者官网 https://developer.harmonyos.co ...
- 《ESP32 学习笔记》 之Arduino环境下 使用DAC模拟输出(是真的DAC哦!)完成两路呼吸灯
在 Arduino 环境下经常使用的 analogWrite(PIN, arg) 语法并不是真正的DAC模拟输出,也只是1kHZ的PWM 波模拟而成! 支持DAC功能的引脚请查看:引脚定义 本次ESP ...
- Fluid — 云原生环境下的高效“数据物流系统”
作者 | 顾荣 南京大学 PASALab (注:本文基于作者公开演讲报告内容整理完成) _来源 | _阿里巴巴云原生公众号 得益于计算成本低.易于扩展.部署便捷.运维高效等多方面的优势,云计算平台吸 ...
- Windows环境下,如何在Docker里运行SAP UI5应用
本文面向的读者是对Docker技术有一些基本概念,但因为没有测试环境,所以没有动手操作过的朋友们. 最近Jerry因为要做一个新的SAP云产品开发,得搭各种开发环境,其中之一就是Docker. Jer ...
- Linux系统编程及应用——ubuntu环境下
Linux系统编程及应用--ubuntu环境下 程序由业务逻辑和系统访问两部分构成的.其中,业务逻辑是根据业务需求,按照设计好的逻辑规则,处理信息,与系统(平台)无关的:而系统访问则是利用操作系统所提 ...
- Windows 环境下搭建VTS
VTS windows 环境下搭建 测试vts 需要可以访问谷歌网站, 工具: Python2.7 (Python3 无法配置成功,配置时会报各种错误) Windows 7 JDK 版本1.8以上 ...
- 0557-6.1.0-Kerberos环境下SQL客户端DBeaver配置异常分析
1 文档编写目的 参考Fayson前面的文章<0469-如何使用DBeaver访问Kerberos环境下的Impala>,环境变量也配置了,krb5.conf文件也准备好了,但在使用SQL ...
- 【博客468】ECMP(等价多路径)环境下链路偶发故障排查
ECMP(等价多路径)环境下链路偶发故障排查 场景: 访问某一个IP,能ping通,但是tcp有时通 问题: ping和tcp协议走的网络路径是一样的吗 答案: 不一定,走的网络路径还是有可能是不同的 ...
- 【鸿蒙 HarmonyOS】创建 Java 语言 HarmonyOS 手机应用 ( 首次进入 DevEco Studio 配置环境 | 创建 Java 手机工程 | 鸿蒙工程代码目录简介 )
文章目录 一.首次进入 DevEco Studio 配置环境 二.创建 Java 手机工程 三.鸿蒙工程代码目录简介 鸿蒙 HarmonyOS 开发环境 DevEco Studio 安装 , 参考博客 ...
最新文章
- 咏南CS插件开发框架也可BS方式部署
- TCP/IP详解--学习笔记(1)-基本概念
- KDD 2020捷报 | 第四范式斩获KDD Cup全球冠军 AutoML挑战赛圆满落幕
- mysql经常问到的面试题_20道BAT面试官最喜欢问的JVM+MySQL面试题(含答案解析)...
- 苹果亚马逊同一天公布无损音质服务、 Google与Flutter、Snap 的 AR 战事等|Decode the Week...
- 他们曾是别人眼中的笑话,最后却都成了神话
- uva 11387——The 3-Regular Graph
- Windows7修改hosts提示:您没有权限在此位置中保存文件
- 系统设计说明书案例_VAV系统设计要点与案例分析
- Js+XML 操作 [ZT]
- 常用python内置函数_python常用内置函数
- vue上传图片文件到服务器,vue如何将quill图片上传到服务器
- Struts 2中文件上传
- 2021年MathorCup高校数学建模挑战赛——大数据竞赛赛道A -思路分享
- 网络+系统+ITSM工具Network+system+ITSM tool
- JAVA中分号用中文还是英文_【英文中有分号(;)吗?怎么用呢?】作业帮
- Drug Discov. Today | 药物发现中的先进机器学习技术
- python查看微信撤回消息怎么弄_微信撤回消息怎么查?Python3步啥都知道了!
- 第3-5课:24 点计算器
- 生成拼音语料及拼音识别转换成中文