1

したがって、5 秒ごとに (POST 要求を介して) Web サービスを呼び出したいと考えています。ただし、以下のコードを実行すると、データが 1 回だけプルされ、リクエストが再度呼び出されることはありません。何が間違っているのですか?

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);
4

1 に答える 1

2

2 つの問題: 要求を呼び出して完了していないことend()と、同じ要求オブジェクトを複数回再利用しようとしていることです。リクエスト オブジェクトの作成を に移動する必要があり、 への呼び出しの後に へのgetData呼び出しを追加する必要があります。end()write()

mikeal のリクエストライブラリは、このような詳細を処理してくれるので便利です。

于 2012-08-03T03:31:05.317 に答える