请问怎么在axios把accept-encoding: gzip,因为返回的是压缩格式,所以中文乱码了

请问怎么修改成accept-encoding: gzip, deflate, br呢

const express = require('express')
const app = express()
const apiRoutes = express.Router()
const axios = require('axios')
app.use('/api', apiRoutes)

before(app) {
      app.get('/api/getDiscList', (req, res) => {
        var url = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg'
        axios.get(url, {
          headers: {
            referer: 'https://c.y.qq.com/',
            host: 'c.y.qq.com'
          },
          params: req.query
        }).then((response) => {
          res.json(response.data)
        }).catch((e) => {
          console.log(e)
        })
      })
    }
    
    
    

2、获取歌单数据

    


    
        export function getDiscList() {
    const url = '/api/getDiscList'
    
    const data = Object.assign({}, commonParams, {
        platform: 'yqq',
        hostUin: 0,
        sin: 0,
        ein: 29,
        sortId: 5,
        needNewCode: 0,
        categoryId: 10000000,
        rnd: Math.random(),
        format: 'json',
    })

    return axios.get(url, {
        params: data,
        headers:{
            'accept-Encoding': 'deflate'
        }
    }).then((res) => {
        return Promise.resolve(res.data)
    })
}
阅读 17.5k
3 个回答
新手上路,请多包涵
新手上路,请多包涵

翻了整个百度,都没找到最后怎么解决的,晕死

 const data = Object.assign({}, commonParams, {
        platform: 'yqq',
        hostUin: 0,
        sin: 0,
        ein: 29,
        sortId: 5,
        needNewCode: 0,
        categoryId: 10000000,
        rnd: Math.random(),
        format: 'json',
    })

    return axios.get(url, {
        params: data,
        headers:{
            'accept-Encoding': 'gzip, deflate, br'
        },
        responseType : 'arraybuffer',  //设置相应为arraybuffer
        decompress:false    //同时把decompress设为false  默认是为true
    }).then((res) => {
        // 此时 res.data 是一个buffer  所以toString 处理一下
        return res.data.toString()
    })

方案2:

    return axios.get(url, {
        params: data,
        headers:{
            'accept-Encoding': 'gzip, deflate, br'
        },
        responseType : 'stream',  //设置相应为stream
        decompress:false    //同时把decompress设为false  默认是为true
    }).then((res) => {
        // 此时 res.data 是一个stream  
        let str = '';
        let result = await new Promise((resolve , reject)=>{
            res.data.on('data' , function(chunk){
                str += chunk.toString('utf8')
            })
            res.data.on('end', function () {
                resolve(str)
            });
            res.data.on('error', function (error) {
                reject(error);
            });
        });
        return result;
    })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题