鸿蒙(HarmonyOS)环境下,如何优雅地进行Http访问

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

网络请求在现代的应用开发中必不可少,我们熟知的网络请求框架真不少,像HttpCient、HttpCient还有volley等,它们确实方便但鸿蒙还不能使用它们,还好我们有HttpURLConnection。使用其进行网络请求的示例代码,如下图所示(不用仔细研究):
在这里插入图片描述
相信你想说:HttpURLConnection虽略有繁琐,但能用。然而,这并不是我们要处理网络访问的全部。因为网络操作耗时及不稳定性,使得我们必须在子线程中进行上述代码的工作,等到网络请求有响应结果了,我们又需要回到主线程更新UI,这又使得我们的程序又胖了一圈。如果请求,请求再多一点呢?我们的程序就胖了好几圈…

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.鸿蒙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() {
            @Override
            public void onFailure(int code, String errorMessage) {
                //http访问出错,此部分在主线程中工作,可以更新UI等操做。
            }
            @Override
            public void onResponse(String response) {
                //http访问成功,此部分在主线程中工作,可以更新UI等操作。
            }
    });
关于我

我是ZZR老师,为什么叫ZZR老师,是因为ZZR是我名字的缩写,在B站、51CTO、今日头条。搜索:ZZR老师 ,都可以找到我的教学视频。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值