收藏
回答

wx.request()设置了enableChunked,但是收到的结果非流式还是一次性返回呢?

wx.request()已经设置了enableChunked:true,但是实际收到的结果是这样的,结果是分段的,但是确实一次性返回:

用Postman请求又没有问题,返回是分段式返回的

大家帮忙看看是哪里有问题呢?基础库版本是2.25.4

代码如下:

test() {
        const that = this;
        const requestTask = wx.request({
            url: 'https://keyue.cloud.baidu.com/online/core/v5/stream/query',
            method: 'POST',
            responseType: "arraybuffer",
            enableChunked: true//关键!开启流式传输模式
            header: {
                'content-type''application/json',
            },
            header: {
                token: that.data.token
            },
            data: {
                "queryText"'',
                "sessionId"''
            },
            success: (res) => {
                console.log("结束----request success", res);
            },
            fail: (err) => {
                console.log("request fail", err);
            },
        });
        // 监听请求头接受事件
        requestTask.onHeadersReceived(r => {});
        // 监听数据分块接收事件
        requestTask.onChunkReceived((response) => {
            // 收到流式数据,根据返回值进行相对应数据解码
            let data16 = that.buf2hex(response.data)
            let responseText = that.hexToStr(data16)
            // 将处理好的字符串加入到数据中
            console.log(responseText)
        });
    },
    buf2hex(buffer) {
        return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
    },
    hexToStr(hex) {
        let str = '';
        for (let i = 0; i < hex.length; i += 2) {
            str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
        }
        return str;
    }
回答关注问题邀请回答
收藏

2 个回答

  • 咔咔
    咔咔
    2024-10-17

    遇到了同样问题,跟nginx配置有关,看这篇文档https://blog.csdn.net/SFSDB/article/details/139689140?spm=1001.2014.3001.5501解决,是nginx有缓存导致的

    2024-10-17
    有用 1
    回复
  • Mr.Zhao
    Mr.Zhao
    2024-09-28

    2024-09-28
    有用
    回复 7
    • .
      .
      02-25
      请你尝试真机ios和安卓测试,开发者工具测不出问题,谢谢
      02-25
      回复
    • Mr.Zhao
      Mr.Zhao
      02-25回复.
      你碰到问题就单独提问,要不然解决不了问题。安卓我试过的,也只是我自己的手机
      02-25
      回复
    • .
      .
      02-25回复Mr.Zhao
      安卓我试过,没有问题。但是到ios,只会在success返回完整信息而不是在onChunkReceived中一条一条返回。只是给你提供一个建议,这个问题卡了我一周了
      02-25
      回复
    • Mr.Zhao
      Mr.Zhao
      02-25回复.
      你不用给我提供建议,有问题就提问,卡着的是你
      02-25
      回复
    • 田间的稻草人。
      田间的稻草人。
      05-28回复.
      想问下您后面ios没有分段返回解决了吗?我也是ios一次返回,安卓正常的分段返回。
      05-28
      回复
    查看更多(2)
登录 后发表内容