2015-05-31 2 views
0

я написал следующий NodeJS код для извлечения объекта JSON с сайтаNodeJS: HTTP GET возвращает код вместо 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); 

}) 

Однако в ответ я получаю некоторый код (своего рода событий .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

Просто дружеское предложение, пожалуйста, используйте структуру, как экспресс или подключить – binariedMe

ответ

2

Согласно API Docs, 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(); 
Смежные вопросы