gpt4 book ai didi

node.js - http响应的Gzip解压

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:23 24 4
gpt4 key购买 nike

使用request模块中,我尝试从 API 请求中具有以下 header 的 Web 服务获取响应:

accept-encoding : gzip

相应地,响应中的以下 header :

content-encoding : gzip

当我尝试使用 zlib 解压缩响应(获取正确的可读响应)时(引用 here ),我无法这样做。


代码片段:

var options = {
url: url,
qs: params.qparams,
method: params.method,
json: params.body,
headers: {
'api_key': configkey,
'Content-Type': 'application/json',
'Accept-Encoding': 'gzip'
},
timeout: constants.request_timeout
};
request(options, function(err, response, body) {

var encoding = response.headers['content-encoding']
if (encoding && encoding.indexOf('gzip') >= 0) {
zlib.gunzip(body, function(err, dezipped) {
//ERROR : { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }
var json_string = dezipped.toString('utf-8');
var json = JSON.parse(json_string);
console.log('\nJSON ::\n',json);
});
} else {
console.log('\n\nRESPONSE IS NOT GZIPPED!');
}
}

我在使用 zlib 时遇到错误(如代码中所注释)。

我无法弄清楚哪里出了问题,尝试使用多个 npm 模块,如 unzipResponsecompress-buffer并尝试了不同的方法,并在不同的地方提出了处理 gzip 的建议。

如果有人能帮忙解决这个问题,我将非常感激。

最佳答案

我有一个解决方案,因为需要向选项对象添加一个键,如下所示:

var options = {
url: url,
qs: params.qparams,
method: params.method,
json: params.body,
headers: {
'api_key': configkey,
'Content-Type': 'application/json',
'Accept-Encoding': 'gzip'
},
timeout: constants.request_timeout,
encoding: null
};

如果有人有更好的解压方法,请补充。

关于node.js - http响应的Gzip解压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39246096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com