当我尝试从下面运行代码时:
var express = require('express');
var app = express();
var port = process.env.PORT || 5000;
var request = require('request');
var zlib = require('zlib');
app.listen(port, function() {
console.log("Listening on " + port);
makeRequest();
});
function makeRequest(){
var url = 'https://api.stackexchange.com/2.1/search?pagesize=5&order=desc&sort=activity&intitle=ios development&site=stackoverflow';
var headers = {'Accept-Encoding': 'gzip'};
var response = request(url, headers);
gunzipJSON(response);
}
function gunzipJSON(response){
var gunzip = zlib.createGunzip();
var json = "";
gunzip.on('data', function(data){
json += data.toString();
});
gunzip.on('end', function(){
parseJSON(json);
});
response.pipe(gunzip);
}
function parseJSON(json){
var json = JSON.parse(json);
if(json.items.length){
for(var i in json.items){
console.log(json.items[i].title + '\n' + json.items[i].link);
}
}
}
我收到错误消息
错误:标头检查不正确
在 Zlib._binding.onerror (zlib.js:286:17)
我在代码中传递我自己的 gzipped url。
任何帮助都会非常有用。
Thanks
老问题(和request
图书馆现已弃用),但迟到总比不到好:
有趣的是,有问题的代码确实适用于 Node.js 版本 15.13.0,但不适用于 14.16.0(保留request
同样的,也是最新的2.88.2)。
但是,只需使用以下简单代码即可在 14.16.0 上运行(现场演示),但不在 15.13.0 上!:
request(url, function (error, response, body) {
console.log(JSON.parse(body));
});
这意味着由于某种原因,在 14.16.0 上,响应正文会自动解压缩(因此上面的代码片段有效),而在 15.13.0 上,响应正文保持压缩状态,因此需要主动解压缩。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)