在Nodejs中用setInterval()发出一个post请求

所以我想每5秒钟调用一次Web服务(通过POST请求)。 但是,当我运行下面的代码时,它只会拉一次数据,而不会再次调用请求。 任何想法是什么错误?

var http = require('http'); var querystring = require('querystring'); var url = require('url') /* * web service info */ var postData = querystring.stringify({ 'index' : '-1', 'status' : '-1', 'format' :'-1', }); var options = { host: 'localhost', path: '/WebApp/WebService.asmx/WebMethod', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': postData.length } }; /* * Web Service Request Obj */ var webServiceReq = http.request(options, function(res) { res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('Response: ' + chunk + '\n'); }); }); var getData= function(){ webServiceReq.write(postData); } // grab the info every 5 seconds setInterval(getData, 5000); 

两个问题:你永远不会通过调用end()来完成你的请求,而是试图多次重复使用同一个请求对象。 您需要将请求对象的创build移动到getData并且在write()调用之后需要添加对end()的调用。

你可能会发现mikeal的请求库很有用,因为它处理这样的细节。