1.原始的网络访问,再加上多线程,会使程序臃肿
网络请求在现代的应用开发中必不可少,我们熟知的网络请求框架真少,像HttpCient、HttpCient还有volley等,它们确实方便但鸿蒙还不能使用它们,还好我们有HttpURLConnection。使用其进行网络请求的示例代码,如下图所示(不用仔细研究):
相信你想说:HttpURLConnection虽略有繁琐,但能用。然而,这并不是我们要处理网络访问的全部。因为网络操作耗时及不稳定性,使得我们必须在子线程中进行上述代码的工作,等到网络请求有响应结果了,我们又需要回到主线程更新UI,这又使得我们的程序又胖了一圈。如果请求,请求再多一点呢?我们的程序就胖了好几圈…
2.将多线程与网络访问封装,为程序瘦身
我们希望的网络请求是这样的:隐藏网络访问细节;优雅处理UI更新。
基于以上两点,我封装了一套Http请求的工具类,最终的网络访问会变成,下图所示:
代码解析:此get方法能够在子线程中完成基于http网络访问, 当访问成功或者失败,就会分别回调onResponse或onFailure方法。而且这两个方法是在主线程中完成回调的,所以是可以更新UI的。
我已将这套Http工具类的源代码,开源上传至github,地址如下:
https://github.com/zzrv5/ZZRHttpExample
题外:由于10月1放假,老婆大人已经整备待发,已对我怒目相斥。在颤抖中完成此代码,如果有纰漏欢迎指正。
3.鸿蒙App Http请求操作步骤:
(此处只是标出重点,github上的源码,可以复制)
3.1添加网络访问权限:
在config.json文件中添加,但要注意权限添加位置,别弄错了。还有像网络访问权限,只给出权限的名字就可以了。如下图所示:
3.2设置访问模式
鸿蒙的默认是https访问模式,如果您的请求网址是http开头的,请在config.json文件中,将cleartextTraffic设定为true,如下配置:
3.3下载我的http工具类:
访问我的开源项目地址:https://github.com/zzrv5/ZZRHttpExample
下载方法如下图所示:
我的项目结构和调用实例
你可以直接把工具类拷贝到你的项目里直接用,实例中我给出的是get请求,你猜猜有没有post方法呢?你可以试试:)
关于我
我是ZZR老师,为什么叫ZZR老师,是因为ZZR是我名字的缩写,在B站、51CTO、今日头条。搜索:ZZR老师 ,都可以找到我的教学视频,对了,我其实是想录视频了的,怎么发上帖子了。