const requestTask = uni.request({
url: 'https://maas-api.cn-huabei-1.xf-yun.com/v1/chat/completions',
method: "POST",
data: {
"model": "xdeepseekv3",
"messages": [{"role": "user","content": "cehsi"}],
"stream": true
},
header: {
'Content-Type': 'application/json',
'Authorization': 'Bearer 你的apikey,
},
enableChunked: true, // 开启分片接收
responseType: 'arraybuffer', // 数据格式
success: (res) => {
console.log("0",res.data);
},
fail: (error) => {
}
});
requestTask.onChunkReceived (res => {
let mesg = this.decode(res.data)
if (mesg) {
console.log("分片接收",mesg);
}
})
// 解析数据方法
decodeUTF8(data) {
// 将二进制数据转为Uint8数组
const uint8Array = new Uint8Array(data);
// 传统方式转换字符串(兼容旧环境)
let string = '';
for (let i = 0; i < uint8Array.length; i++) {
string += String.fromCharCode(uint8Array[i]);
}
// 双重解码处理特殊字符(如中文)
return decodeURIComponent(escape(string));
}
decode(data) {
const text = this.decodeUTF8(data);
const lines = text.split('\n');
let result = '';
for (let line of lines) {
if (line.startsWith('data: ')) {
const jsonData = line.slice(6).trim();
// 结束标识处理
if (jsonData === '[DONE]') return result;
// 清理控制字符(防止JSON解析失败)
const cleanedData = jsonData.replace(/[\u0000-\u001F\u007F-\u009F]/g, '');
try {
const parsedData = JSON.parse(cleanedData);
// 提取AI生成内容
result += parsedData.choices[0].delta.content || '';
} catch (e) {
console.error('解析失败:', e);
}
}
}
return result;
},