所以我想每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);
答案 0 :(得分:2)
两个问题:您永远不会通过调用end()
来完成请求,并且您尝试多次重复使用相同的请求对象。您需要将请求对象的创建移至getData
,并且需要在调用end()
后添加对write()
的调用。
你可能会发现mikeal的request库很有用,因为它会处理这样的细节。