Моя цель выходит за рамки этого простого запроса, но я пытаюсь сделать http-запрос и получить ответ обратно.
Я скопировал код из nodejs.org http-запроса , чтобы попытаться сделать http-запрос. Я изменил конечную точку и глагол REST.
Код извлекает страницу и записывает это сообщение в консоль (из вывода моего экспресс-сервера), а затем зависает. Он отображает «Нет больше данных в ответ. Конечный сигнал получен». после отображения html целевой страницы.
Я получаю этот зависший ответ через веб-страницу и через почтальона.
Вывод отражает STATUS 200 из ответа. На связанной странице написано, что события происходят в следующем порядке:
'разъем'
'ответ'
'данные'
'конец'
'Закрыть'
Как мне остановить зависание ответа? Конечное событие запускается, я должен сам инициировать закрытие?
Кроме того, каков предпочтительный метод для возврата тела ответа? Все примеры идут в console.log.
ПОЖАЛУЙСТА, НЕ РАЗМЕЩАЙТЕ НИЧЕГО О ДОПОЛНИТЕЛЬНЫХ БИБЛИОТЕКАХ. Я хотел бы сделать эту работу, как это рекламируется на странице node.js.
const options = {
hostname: 'junto-peace.com',
port: 80,
path: '/story.html?article=peace',
method: 'GET'
};
let body = ''
const req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
body += chunk;
});
res.on('end', () => {
console.log('No more data in response. End signal received.');
});
});
//EDIT: The code never reaches the next line:
console.log('outside of http.request. This line is never reached');
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
// write data to request body
req.write(body);
req.end();
Вывод на консоль показывает html страницы, а конец вывода на консоль гласит: «В ответе больше нет данных. Получен сигнал окончания».
т.е.. эта строка никогда не достигается: console.log («вне http.request. Эта строка никогда не достигается»);
РЕДАКТИРОВАТЬ: я добавил console.log после вызова кода http.request. Код "зависает" или никогда не попадает туда.
РЕДАКТИРОВАТЬ 2: Как указывалось, этот код прекрасно работает из командной строки.