使用 request 模块,我正在尝试从一个具有以下 API 请求头的 Web 服务中获取响应:
代码片段如下:
我在这里遇到了一个错误(如代码中所注释的),使用了zlib。
我无法弄清楚出了什么问题,尝试了多个npm模块,比如unzipResponse和compress-buffer,并尝试了不同的方法来处理gzip,就像各个地方建议的那样。
如果有人能帮助解决这个问题,我将非常感激。
相应地,在响应中有以下标头:accept-encoding : gzip
当我尝试使用 zlib(参考 这里)解压缩响应(获取正确可读的响应)时,我无法做到这一点。content-encoding : 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
};
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模块,比如unzipResponse和compress-buffer,并尝试了不同的方法来处理gzip,就像各个地方建议的那样。
如果有人能帮助解决这个问题,我将非常感激。
request
并采用了你的模式,然后问题就解决了。但我真希望能够明白这里到底发生了什么。 - z0d14c