在使用Facebook图形api时,我使用https.get来请求facebook用户数据。
var optionsP = {
host: 'graph.facebook.com',
path: '/me?access_token=XXXX'
};
https.get(optionsP, function(resp) {
resp.on('data', function(d) {
console.log('ondata')
console.log(d.length)
process.stdout.write(d)
});
}).on('error', function(e) {
console.error(e);
});
但响应数据分为两部分!第一次打印最多1034个字符,然后同样的回叫将工作并打印剩余的1347个字符。这些部分回应的原因是什么?
答案 0 :(得分:8)
这是正常的。 resp
是一个流。它是ClientResponse对象,实现可读的流接口。以下是文档:http://nodejs.org/api/http.html#http_http_clientresponse
您可以将输出传输到接受流的位置,也可以将其存储在缓冲区中,直到您收到'end'事件。
这是一个将数据存储在内存中的String中的示例,直到它全部到达:
https.get(optionsP, function(resp) {
resp.setEncoding(); //Now the data is a string!
var store = "";
resp.on('data', function(d) {
store += d;
});
resp.on('end', function() {
console.log("this is all: " + store);
});
}).on('error', function(e) {
console.error(e);
});