想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#zz
1 .原始的网络访问,再加上多线程,会使程序臃肿
网络请求在现代的应用开发中必不可少,我们熟知的网络请求框架还真不少,像HttpClient、OkHttp还有volley等,它们确实方便但鸿蒙还不能使用它们,还好我们有HttpURLConnection。使用其进行网络请求的示例代码,如下图所示(不用仔细研究):
相信你想说:HttpURLConnection虽略有繁琐,但能用。然而,这并不是我们要处理网络访问的全部。因为网络操作耗时及不稳定性,使得我们必须在子线程中进行上述代码的工作,等到网络请求有响应结果了,我们又需要回到主线程更新UI,这又使得我们的程序又胖了一圈。如果请求,再多一点呢?我们的程序就胖了好几圈...
2.将多线程与网络访问封装,为程序瘦身
我们希望的网络请求是这样的:1.隐藏网络访问细节;2.优雅处理UI更新。
基于以上两点,我封装了一套Http请求的工具类,最终的网络访问会变成——这样:
- ZZRHttp.get(url, new ZZRCallBack.CallBackString() {
- @Override
- public void onFailure(int code, String errorMessage) {
- //http访问出错,此部分在主线程中工作,可以更新UI等操做。
- }
- @Override
- public void onResponse(String response) {
- //http访问成功,此部分在主线程中工作,可以更新UI等操作。
- }
- });
代码解析:此get方法能够在子线程中完成基于http网络访问, 当访问成功或者失败,就会分别回调onResponse或onFailure方法,这两个方法是在主线程中完成回调的,所以可以更新UI。
我已将这套Http工具类的源代码,开源上传至github,地址如下:https://github.com/zzrv5/ZZRHttp
3.鸿蒙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() {
- @Override
- public void onFailure(int code, String errorMessage) {
- //http访问出错,此部分在主线程中工作,可以更新UI等操做。
- }
- @Override
- public void onResponse(String response) {
- //http访问成功,此部分在主线程中工作,可以更新UI等操作。
- }
- });
4.关于我
我是ZZR老师,为什么叫ZZR老师,是因为ZZR是我名字的缩写,同学们可以在: https://edu.51cto.com/course/25200.html ,看到我的鸿蒙视频课程。
想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#zz
歌词编辑器 歌词编辑器 第一步:选择要播放的歌曲并播放 第二步:填写全部的歌词...
前言 相信大家都知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也...
vbs:把一段文字中指定字符颜色变成红色的正则 functionc(Tstr,Word) Dimre Setre...
计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持...
ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可...
【排序算法】之lowb三人组冒泡、插入、选择 什么是lowb三人组 冒泡排序bubble so...
本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javas...
一、正则表达式概述 二、正则表达式在VBScript中的应用 三、正则表达式在VavaScr...
一石激起千层浪,继中国区浩浩荡荡的大裁员告一段落之后,甲骨文并未因此收起手...
微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很...