HarmonyOS 鸿蒙Next中读取数据

HarmonyOS 鸿蒙Next中读取数据 http请求返回数据类型为json文件时如何读取data

3 回复

【背景知识】

【解决方案】

先使用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中配置相应权限。

在HarmonyOS Next中,当HTTP请求返回JSON数据时,可以通过以下步骤读取其中的data字段:

  1. 使用@ohos.net.http模块创建HTTP请求
  2. 在请求回调中获取响应数据
  3. 解析JSON字符串为对象
  4. 访问data字段

示例代码:

import http from '@ohos.net.http';

// 创建HTTP请求
let httpRequest = http.createHttp();

// 发送请求
httpRequest.request(
  "https://example.com/api/data",
  {
    method: http.RequestMethod.GET,
  }, (err, data) => {
    if (!err) {
      // 解析JSON响应
      let response = JSON.parse(data.result as string);
      
      // 读取data字段
      let responseData = response.data;
      console.log('获取到的数据:', responseData);
    } else {
      console.error('请求失败:', err);
    }
  }
);

注意处理异常情况,确保JSON解析安全,建议添加try-catch块。如果data字段是嵌套对象,可以通过点操作符继续访问深层属性。

回到顶部