在鸿蒙环境下,优雅的完成HTTP访问网络

网友投稿 892 2022-11-03

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

在鸿蒙环境下,优雅的完成HTTP访问网络

“ 本文为 HarmonyOS技术社区 ZZR 老师的教程:在鸿蒙(HarmonyOS)环境下,优雅的完成 Http 访问网络。

图片来自 Pexels

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

网络请求在现代的应用开发中必不可少,我们熟知的网络请求框架还真不少,像 HttpClient、OkHttp 还有 Volley 等,它们确实方便但鸿蒙还不能使用它们,还好我们有 HttpURLConnection。

使用其进行网络请求的示例代码,如下图所示(不用仔细研究):

相信你想说:HttpURLConnection 虽略有繁琐,但能用。然而,这并不是我们要处理网络访问的全部。

因为网络操作耗时及不稳定性,使得我们必须在子线程中进行上述代码的工作,等到网络请求有响应结果了,我们又需要回到主线程更新 UI,这又使得我们的程序又胖了一圈。

如果请求,再多一点呢?我们的程序就胖了好几圈...

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

我们希望的网络请求是这样的:

隐藏网络访问细节优雅处理 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

鸿蒙 Http 请求操作步骤

01添加网络访问权限

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

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

02设置访问模式

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

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

03添加 ZZRHttp 依赖

在 build.gradle 文件的 dependencies 中,添加如下配置,引入 ZZRhttp:

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

04进行网络访问

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

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

关于我

我是 ZZR老师,为什么叫 ZZR老师,是因为 ZZR是我名字的缩写,同学们可以在:https://edu.51cto.com/course/25200.html,看到我的鸿蒙视频课程。

上一篇:软件测试培训之测试工程师面试心得
下一篇:软件测试培训之测试领域中的10个生存和发展技巧
相关文章

 发表评论

暂时没有评论,来抢沙发吧~