http Response的Gzip解压
Gzip decompression of http Response
使用 request 模块,我试图从 API 请求中具有以下 header 的 Web 服务获取响应:
accept-encoding : gzip
相应地,在响应中跟随 header:
content-encoding : gzip
当我尝试使用 zlib(referred 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 模块,如 unzipResponse and compress-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
};
如果谁有更好的解压方法,欢迎补充。
使用 request 模块,我试图从 API 请求中具有以下 header 的 Web 服务获取响应:
accept-encoding : gzip
相应地,在响应中跟随 header:
content-encoding : gzip
当我尝试使用 zlib(referred 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 模块,如 unzipResponse and compress-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
};
如果谁有更好的解压方法,欢迎补充。