uni.request 接收 Stream 内容 - 使用 uni.request 获取流数据
使用 uni.request 发送请求时,可以通过配置请求头的方式告诉服务器返回的数据是一个流(stream),然后在处理响应的时候,通过监听响应的 data 事件来接收流数据。具体步骤如下:
- 在请求的 header 中添加 Content-Type 和 Accept-Encoding 字段,告诉服务器返回的数据是一个流并采用 gzip 压缩:
uni.request({
url: 'https://example.com/api',
header: {
'Content-Type': 'application/octet-stream',
'Accept-Encoding': 'gzip'
},
success: function (res) {
console.log(res);
// res.data 为一个 stream 对象
res.data.on('data', function (chunk) {
console.log(chunk);
// 处理流数据
});
}
});
- 在响应的 success 回调函数中获取响应的 data 属性,它是一个 stream 对象,通过监听 data 事件来接收流数据。在监听 data 事件时,每次接收到一段数据,就会触发一次 data 事件,回调函数的参数 chunk 就是接收到的数据段。
需要注意的是,接收数据的时候需要注意流的编码和压缩方式,如果服务器返回的流是经过 gzip 压缩的,需要先解压缩再处理流数据。此外,也需要考虑流的结束情况,如果流数据已经接收完毕,会触发一次 end 事件,可以在 end 事件回调中进行处理。
原文地址: https://www.cveoy.top/t/topic/mqUK 著作权归作者所有。请勿转载和采集!