如何从Node.js HTTP请求取回数据?

时间:2018-09-08 21:24:34

标签: node.js httprequest

我的目的不只是这个简单的请求,而是我尝试发出一个http请求并获得响应。

我已经从nodejs.org http request复制了代码以尝试发出http请求。我已经修改了端点和REST动词。

代码检索页面并将此消息写入控制台(我的快速服务器输出的控制台),然后挂起。它显示“没有更多数据作为响应。收到结束信号。”显示目标页面的html之后。

我通过网页和邮递员得到了这个悬而未决的答复。

输出反映了响应中的状态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的外部。这条线永远不会到达');

编辑:我在http.request代码调用之后添加了console.log。代码“挂起”或永不到达那里。 编辑2:如前所述,该代码本身可以从命令行正常运行。

0 个答案:

没有答案