У меня есть фрагмент кода, который должен выполнить запрос http get. Программа прошла успешно без ошибок, но я не видел никакого ответа и даже не заходил в функцию обратного вызова! Сначала я подумал, что это потому, что http является асинхронным и в конце ставит большой цикл, но это тоже не сработало. Кто-нибудь знает эту проблему? Печатается только первый консольный журнал sendHttpRequest и 444. Я также пробовал http.get, но он тоже не работал.Nodejs http-запрос не работает
function sendHttpRequest (url, callBack) {
console.log("sendHttpRequest");
//constrct options
var options = {
host: 'www.google.com',
path: '/index.html',
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
http.get("http://www.google.com/index.html", function(res) {
console.log("Got response: " + res.statusCode);
});
var req = http.request(options, function(res) {
console.log("333");
var output = '';
console.log(options.host + ':' + res.statusCode);
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log("DATATATAT!")
output += chunk;
});
res.on('end', function() {
console.log('222');
var obj = JSON.parse(output);
callBack(res.statusCode, obj);
});
});
req.on('error', function (err) {
console.log('error: ' + err.message);
});
req.end();
console.log("444");
}
}
Кто-то сказал, что Google не имеет «/ индекс .html ", я удалил его, но все равно это не сработало. Он просто не заходил в обратный вызов. Нет ответа. – user3084182
Как вы это называете? У этого есть несколько проблем, но в остальном я вижу, что все функции 'console.log' и callback также вызываются. Вы также возвращаете HTML, который 'JSON.parse' никогда не будет работать. – matth
@ making3 Привет, я завернул это как модуль и вызвал его из задачи grunt, но почему-то я вижу только первый консольный журнал и последний, который равен 444. Должен ли я вызывать асинхронный вызов либо в grunt, либо в этом модуле? ждать ответа? Благодаря! Для части json, изначально я собирался разобрать json, чтобы это не было проблемой. – user3084182