NodeJS:HTTP GET返回代码而不是JSON对象

时间:2015-05-31 10:18:10

标签: javascript html json node.js http

我编写了以下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;
 }

1 个答案:

答案 0 :(得分:2)

根据 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();