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


