Jas*_*rry 6 compression gzip node.js stackexchange-api
我无法想象我的生活.下面是请求模块的实现,但我也尝试使用node-XMLHttpRequest模块无济于事.
var request = require('request');
var url = 'http://api.stackexchange.com/2.1/questions?pagesize=100&fromdate=1356998400&todate=1359676800&order=desc&min=0&sort=votes&tagged=javascript&site=stackoverflow';
request.get({ url: url }, function(error, response, body) {
if (error || response.statusCode !== 200) {
console.log('There was a problem with the request');
return;
}
console.log(body); // outputs gibberish characters like ?
console.log(body.toString()); // also outputs gibberish
});
Run Code Online (Sandbox Code Playgroud)
似乎是一个编码问题,但我在浏览器中使用了完全相同的代码(使用本机XHR对象),它没有问题.我究竟做错了什么?
Per*_* P. 10
内容被gzip压缩.您可以使用request,并zlib解压缩从API流式的回应:
var request = require('request')
,zlib = require('zlib');
var url = 'http://api.stackexchange.com/2.1/questions?pagesize=100&fromdate=1356998400&todate=1359676800&order=desc&min=0&sort=votes&tagged=javascript&site=stackoverflow';
request({ url: url, headers: {'accept-encoding': 'gzip'}})
.pipe(zlib.createGunzip())
.pipe(process.stdout); // not gibberish
Run Code Online (Sandbox Code Playgroud)
(参考:https: //stackoverflow.com/a/14739453/112196)
虽然pero的答案是正确的,但有一种更简单的方法可以做到这一点.
由于您正在使用请求,您还可以添加gzip: true标记:
var request = require('request');
var url = 'http://api.stackexchange.com/2.1/questions?pagesize=100&fromdate=1356998400&todate=1359676800&order=desc&min=0&sort=votes&tagged=javascript&site=stackoverflow';
request.get({ url: url, headers: {'accept-encoding': 'gzip'}, gzip: true }, function(error, response, body) {
console.log(body); // not gibberish
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |