首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请求url返回errno:-3,代码:'Z_DATA_ERROR‘

请求url返回errno:-3,代码:'Z_DATA_ERROR‘
EN

Stack Overflow用户
提问于 2022-04-01 08:18:04
回答 1查看 408关注 0票数 0

我使用了三个lib请求url返回相同的错误。

网址:https://comment.bilibili.com/558679896.xml

Axios错误:

错误:在Zlib.zlibOnError as onerror { errno:-3,代码:'Z_DATA_ERROR',

有错误:

ode:内部/过程/承诺:246个triggerUncaughtException(err,true /* fromPromise */);^

错误:在Zlib.zlibOnError as onerror { errno:-3,代码:'Z_DATA_ERROR‘}上的头检查不正确

节点http:

代码语言:javascript
复制
const zlib = require('zlib');
const http = require('http');
const fs = require('fs');
const { pipeline } = require('stream');

const request = http.get({ host: 'comment.bilibili.com',
                           path: '/558679896.xml',
                           port: 80,
                           headers: { 'Accept-Encoding': 'br,gzip,deflate' } });
request.on('response', (response) => {
  const output = fs.createWriteStream('example.com_index.html');

  const onError = (err) => {
    if (err) {
      console.error('An error occurred:', err);
      process.exitCode = 1;
    }
  };

  switch (response.headers['content-encoding']) {
    case 'br':
      pipeline(response, zlib.createBrotliDecompress(), output, onError);
      break;
    // 或者,只需使用 zlib.createUnzip() 来处理以下两种情况:
    case 'gzip':
      pipeline(response, zlib.createGunzip(), output, onError);
      break;
    case 'deflate':
      pipeline(response, zlib.createUnzip(), output, onError);
      break;
    default:
      pipeline(response, output, onError);
      break;
  }
});

got:

代码语言:javascript
复制
const stream = require('stream');
const {promisify} = require('util');
const fs = require('fs');
const got = require('got');

const pipeline = promisify(stream.pipeline);
const zlib = require('zlib');


(async () => {
    await pipeline(
        got.stream('https://comment.bilibili.com/558679896.xml', {
      decompress: false,
            headers: { 'Accept-Encoding': 'deflate' }
    }).setEncoding('utf8'),
    zlib.createUnzip(),
        fs.createWriteStream('1.xml')
    );
})();


got('https://comment.bilibili.com/558679896.xml')
    .then(res => {
        console.log(res)
    })
    .catch(err => {
        console.log(err)
    })

axios:

代码语言:javascript
复制
const axios = require('axios');
const fs = require('fs');
const zlib = require('zlib');

axios('https://comment.bilibili.com/558679896.xml', {
  decompress: false,
  responseType: 'stream',
  transformResponse(data) {
    try {
      return data.pipe(zlib.createUnzip())
    } catch (e) {
      return data
    }
  }
})
  .then(res => {
    res.data.pipe(fs.createWriteStream('1.xml'))
  })

axios('https://comment.bilibili.com/558679896.xml')
  .then(res => {
    console.log(res.data)
  })
  .catch(err => {
    console.log(err)
  })
EN

回答 1

Stack Overflow用户

发布于 2022-04-29 15:01:46

是工作!

代码语言:javascript
复制
const fs = require('fs');
const got = require('got');
const { inflateRawSync } = require('zlib');

async function main () {
    const bufferData = await got('https://comment.bilibili.com/558679896.xml', {
        decompress: false
    }).buffer();
    console.log(inflateRawSync(bufferData).toString())
}

main()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71703837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档