我运行包含下面代码的node myserver.js
,并在40-50秒后得到错误(下面是代码)。为什么没有发生任何事情时会出错?
var options = {
host: 'google.com',
port: '80',
path: '/',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': 'post_data.length'
}
};
var subscribeRequest = require('http').request(options, function(res) {
console.log('send request');
}).on('error', function(err){console.log(err.stack)});
40-50秒后我收到此错误:
Error: connect ETIMEDOUT
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)
答案 0 :(得分:4)
我发现这里至少有两件事是错的:
您没有结束您的请求。当您使用http.request()
时,必须在完成发送任何数据时返回的请求对象上调用.end()
,以便服务器知道不再有数据到来。 http.get()
会自动为您调用.end()
,因为没有GET请求的正文。
'Content-Length': 'post_data.length'
应为'Content-Length': post_data.length
答案 1 :(得分:0)
在宣布您的请求后,您必须致电subscribeRequest.end()
!如果您不这样做,您的请求将永远不会被发送