как получить данные обратно из http-запроса nodejs? - PullRequest
0 голосов
/ 09 сентября 2018

Моя цель выходит за рамки этого простого запроса, но я пытаюсь сделать 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: Как указывалось, этот код прекрасно работает из командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...