HarmonyOS 鸿蒙Next中读取数据
HarmonyOS 鸿蒙Next中读取数据 http请求返回数据类型为json文件时如何读取data
        
          3 回复
        
      
      
        【背景知识】
- JSON解析与生成。
- HTTP请求返回文件可通过requestInStream获取文本,参考发起HTTP流式传输请求。
【解决方案】
先使用requestInStream获取文本,再通过on(“dataReceive”)流式获取数据,on(“dataEnd”)整合文本内容转化JSON数据。
async httpTest1(): Promise<object> {
  return new Promise((resolve: Function, reject: Function) => {
    let res = new ArrayBuffer(0);
    let httpRequest = http.createHttp();
    httpRequest.on('dataReceive', (data: ArrayBuffer) => {
      const newRes = new ArrayBuffer(res.byteLength + data.byteLength);
      const resView = new Uint8Array(newRes);
      resView.set(new Uint8Array(res));
      resView.set(new Uint8Array(data), res.byteLength);
      res = newRes;
      console.info('res length: ' + res.byteLength);
    })
    httpRequest.on('dataEnd', () => {
      try {
        let textDecoderOptions: util.TextDecoderOptions = {
          ignoreBOM: true
        }
        let decoder = util.TextDecoder.create('utf-8', textDecoderOptions);
        let str = decoder.decodeToString(new Uint8Array(res));
        console.info('test json read successful: ' + str)
        let jsonStr = json.parse(str)
        resolve(jsonStr)
      } catch (err) {
        hilog.error(0x0000, 'testTag', `error: ${err.code} ${err.message}`);
      }
    })
    httpRequest.requestInStream('https://www.example.com/html/app/updateVersion.json', // 后台服务器地址
      {
        method: http.RequestMethod.GET,
        header: {
          'Content-Type': 'application/json'
        },
        connectTimeout: 6000,
        readTimeout: 6000,
      }, (err, data) => {
        if (!err) {
        }
      }
    );
  })
}
更多关于HarmonyOS 鸿蒙Next中读取数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,数据读取主要通过DataAbility和用户首选项实现。DataAbility用于跨应用数据共享,使用DataAbilityHelper访问数据源。用户首选项则用于轻量级键值对存储,通过Preferences类进行读取。分布式数据管理支持跨设备数据读取,使用KvManager连接分布式数据库。所有数据操作需在UI主线程外执行,确保应用响应性。数据读取涉及权限声明,需在config.json中配置相应权限。
 
        
       
                   
                   
                  


