HarmonyOS NEXT网络状态监听HTTP和RCP请求网络

当我们在HarmonyOS NEXT中开发的应用,基本上都会使用网络请求,从服务端获取数据在客户端显示或者供用户交互,有时候网络发生变化时,我们需要做一些相应的操作,接下来我们一起来了解下在HarmonyOS NEXT下如何监听网络状态,如何向服务端请求网络

网络监听

网络监听需要声明接口调用所需要的权限:ohos.permission.GET_NETWORK_INFO

1.创建网络对象
 

 从@kit.NetworkKit中导入connection命名空间,创建NetConnection对象

import { connection } from "@kit.NetworkKit";
  
netConnection= connection.createNetConnection(this.netSpecifier, this.timeout)

2.开启网络状态订阅

订阅默认网络状态发生变化的通知,订阅成功后进行后续步骤

openRegister(){
  this.netConnection.register((error:BusinessError)=>{
    hilog.info(0x0000, this.TAG,JSON.stringify(error))
  })
}

3.订阅具体网络变化

订阅具体网络变化事件,如网络可用,网络丢失等

this.netConnection.on('netAvailable',(data:connection.NetHandle)=>{
  promptAction.showToast({message:'当前可用网络:'+JSON.stringify(data),duration:2000});
});

 this.netConnection.on('netLost',()=>{
      promptAction.showToast({message:'网络丢失了',duration:2000});
 });

具体的网络时间主要分为:

参数 说明 触发时机
netAvailable 网络可用事件 当设备连接到可用网络时触发
netBlockStatusChange 网络阻塞状态事件 当建立网络连接超时、传输数据包丢失或网络带宽不足、负载过高时触发
netCapabilitiesChange 网络能力变化事件 当网络的能力(如类型、带宽等)发生变化时触发
netConnectionPropertiesChange 网络连接信息变化事件 当网络连接的信息(如IP地址、网关等)发生变化时触发
netLost 网络丢失事件 当设备失去网络连接时触发
netUnavailable 网络不可用事件 当设备处于无网络状态或网络不可用时触发

他们的触发条件关系如下图:

4.取消网络状态订阅

应用关闭时取消网络状态订阅,不在接受通知

unRegister(){
  this.netConnection.unregister((error:BusinessError)=>{
    hilog.info(0x0000, this.TAG,'移除网络状态订阅:'+JSON.stringify(error))
  })
}

使用HTTP访问网络

场景介绍

应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。

HTTP数据请求功能主要由http模块提供。

使用该功能需要申请ohos.permission.INTERNET权限

request接口开发步骤

  1. 从@kit.NetworkKit中导入http命名空间。
  2. 调用createHttp()方法,创建一个HttpRequest对象。
  3. 调用该对象的on()方法,订阅http响应头事件,此接口会比request请求先返回。可以根据业务需要订阅此消息。
  4. 调用该对象的request()方法,传入http请求的url地址和可选参数,发起网络请求。
  5. 按照实际业务需要,解析返回结果。
  6. 调用该对象的off()方法,取消订阅http响应头事件。
  7. 当该请求使用完毕时,调用destroy()方法主动销毁。
// 引入包名
import { htt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值