我试图从stackexchange api中获取一些json数据。接收OAuth代码和访问令牌可以正常工作。但是在调用实际的数据获取端点时,响应确实看起来很奇怪。可能编码或类似。
请求如下所示:
var client = requestjson.newClient('https://api.stackexchange.com');
client.get("/2.2/me/comments?order=desc&sort=creation&site=stackoverflow&access_token="+myToken+"&key="+key, function(err, res, body) {
console.log(body);
})
然后响应主体看起来像这样:
i�)�)QEJ�a��Ml�d4���20�c����M���]�v5/AZ�m��z �C��`�~���*ͳ`Fh'����<M��k��J������J��> &��ȗ����m��o>U�n�鴬�x=M��}1��m��'����ϻ��#
��zDn���n=ϳh[��QY��M���uv�*����&?;��S��х�V���'{mJ? �8/�W�q���͓��+��qK��������X�9X~��g�������YrVY���B���X1#�`E
我已尝试JSON.parse
,但它在控制台中抛出错误。
答案 0 :(得分:3)
我自己在这里找到答案:node.js - easy http requests with gzip/deflate compression
添加了以下内容:
var reqData = {
url: "https://api.stackexchange.com/2.2/me/comments?order=desc&sort=creation&site=stackoverflow&access_token="+myToken+"&key="+key,
method:"get",
headers: {'Accept-Encoding': 'gzip'}
}
var gunzip = zlib.createGunzip();
var json = "";
gunzip.on('data', function(data){
json += data.toString();
});
gunzip.on('end', function(){
console.log(JSON.parse(json));
});
request(reqData)
.pipe(gunzip)