我编写了以下NodeJS代码来从网站
中检索json对象var http = require('http');
var url = {
host: 'www.sample-website.com',
headers: {
"Accept": "application/json",
'Content-Type': 'application/json'
},
};
http.get(url, function(obj) {
var output = "";
for (property in obj) {
output += property + obj[property] ;
}
console.log(output);
})
然而,作为响应,我得到了一些我无法理解的代码(某种类型的events.js代码)(不是HTML代码)。需要帮助找出我出错的地方
包含一个参考片段::
// emit removeListener for all listeners on all events
if (arguments.length === 0) {
for (key in this._events) {
if (key === 'removeListener') continue;
this.removeAllListeners(key);
}
this.removeAllListeners('removeListener');
this._events = {};
return this;
}
答案 0 :(得分:2)
根据node.js API文档,http.get()
将ServerResponse对象传递给其回调。您当前正在打印该对象(及其父级)属性。
如果你想获得响应主体,你应该在其数据事件上注册一个监听器:
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
并重新组装块。
可以通过res.statuscode
属性访问响应代码,res.headers
将为您提供数组中的响应标头。
根据要求,这是一个完整的示例代码:
var http = require('http');
var url = 'http://stackoverflow.com';
// ...
http.request(url, function (res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
console.log('BODY: ');
res.setEncoding('utf8');
res.on('data', function (chunk) {
process.stdout.write(chunk);
});
}).end();