Node.js没有下载完整的网站

我exxt这个代码下载网站,然后执行callback函数,当它完成下载。

var request = require("request"); var options = { uri: "http://www.hellointernet.fm/podcast?format=rss", headers: { 'User-Agent': 'request' } }; request(options, function(error, response, body) { console.log(body); }); 

但是在执行callback时,它不会下载完整的网站。 我尝试了与其他url,它的工作。

我如何等待整个页面被下载?

这里的问题是你正在处理一个performance不好的服务器。 你的代码很好。

在连线上,你的应用程序写这个HTTP请求:

 GET /podcast?format=rss HTTP/1.1 User-Agent: request host: www.hellointernet.fm Connection: close 

然后,服务器响应每个请求的长度不等的数据,大约在70KB到360872字节之间。 服务器缓冲区完全发送之前,连接正在closures。 破碎的服务器,你可以做的不多。

但是,如果您告诉服务器您打算使用HTTP / 1.1保持活动状态,则可以使用。

 GET /podcast?format=rss HTTP/1.1 User-Agent: request host: www.hellointernet.fm Connection: keep-alive 

原因是服务器不会过早地closures连接。 基本上,你正在窃听服务器的错误。

要在你的代码中实现这个,在顶部附近添加这个:

 var http = require('http'); 

然后,在您的请求选项中:

 agent: http.Agent({keepAlive: true}) 

基本上,这告诉请求模块使用一个HTTP代理(这使得在Node.js应用程序中保持活动)。 通过代理,HTTP客户端可以发出一个保持活动状态的HTTP请求,从而绕过服务器问题。

我build议联系谁运行hellointernet.fm,并告诉他们,他们的服务器坏了。 这可能会打破各种客户。