在鸿蒙(HarmonyOS)环境下,优雅的完成Http访问网络【教程】
头像 宋你一朵小红花 2020-10-01 10:11:10    发布
2694 浏览 10 点赞 12 收藏

1.原始的网络访问,再加上多线程,会使程序臃肿
       网络请求在现代的应用开发中必不可少,我们熟知的网络请求框架还真不少,像HttpClient、OkHttp还有volley等,它们确实方便但鸿蒙还不能使用它们,还好我们有HttpURLConnection。使用其进行网络请求的示例代码,如下图所示(不用仔细研究):

在鸿蒙(HarmonyOS)环境下,优雅的完成Http访问网络【教程】-鸿蒙开发者社区  相信你想说: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等操作。
            }
    });
    复制



©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
其它
头像

宋你一朵小红花

我还没有写个人简介......

881

帖子

0

提问

1679

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255