使用node.js HTTP远程客户端请求不会返回任何主体

我正在使用node.js来下载一个网页。 但是,它没有收到任何数据:

console.log('preparing request to ' + url) u = require('url').parse(url) var remote_client = http.createClient(80, u['host']); var request = remote_client.request("GET", u['pathname'], {"host": u['host']}); console.log("request made") request.addListener('response', function (response) { response.setEncoding('binary') var body = ''; response.addListener('data', function (chunk) { body += chunk; console.log('chunk received') }); }); 

最后一个控制台消息是“请求作出”。 有没有“收到块”或类似的控制台消息。 思考?

这是一个总是为我工作的例子:

 var sys = require('sys'), http = require('http'); var connection = http.createClient(8080, 'localhost'), request = connection.request('/'); connection.addListener('error', function(connectionException){ sys.log(connectionException); }); request.addListener('response', function(response){ var data = ''; response.addListener('data', function(chunk){ data += chunk; }); response.addListener('end', function(){ // Do something with data. }); }); request.end(); 

您需要在请求上调用end()以表示您已准备好发送它。 你也应该添加一个用户代理标题到你的请求。 许多Web服务器都在寻找它。

 console.log('preparing request to ' + url) u = require('url').parse(url) var remote_client = http.createClient(80, u['host']); var request = remote_client.request("GET", u['pathname'], {"host": u['host'], "user-agent": "node.js"}); console.log("request made") request.addListener('response', function (response) { response.setEncoding('binary') var body = ''; response.addListener('data', function (chunk) { body += chunk; console.log('chunk received') }); }); request.end();