我的目的不只是这个简单的请求,而是我尝试发出一个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:如前所述,该代码本身可以从命令行正常运行。