用http.get后,用ClientResponse怎么取得请求的URL输出的文本啊?
发布于 10 年前 作者 wimlwiml 9655 次浏览 最后一次编辑是 6 年前

<p>代码: </p>

<pre><code> var u = url.parse(urls); http.get({ host: u[‘host’], port: 80, path: u[‘path’] }, function(res){ if (res.statusCode == 200){ //log();//要记下URL输出的内容 }else{ log(urls+":\n" + res.statusCode); } } ).on(‘error’, function(e){ log("Got error: " + e.message); }); </code></pre>

<p>怎么取得请求URL输出的文本啊?</p>

10 回复

哦,知道了, <pre><code> res.on(‘data’, function (chunk) { console.log('BODY: ’ + chunk); }); </code></pre>

注意chunk的拼接。

这个拼接好像很麻烦,我怎么知道哪次chunk最后的啊? 不过还好,我的应用输出的东西长度不会超过20个字节,应该不会分二次发过来了

这个拼接好像很麻烦,我怎么知道哪次的chunk是最后一个啊?
不过还好,我的应用输出的东西长度不会超过20个字节,应该不会分二次发过来了

如果只是想全部输出到命令行中,可以这样

res.pipe(process.stdout);

pipe?? 官方文档没查到这个,回头试试

囧~,不能因为短就不会呀,res除了 data事件, 还有end事件,绑定之,就妥了

pipe是stream的方法, http的response 就是一个stream实例,是可以pipe的。看stream的文档,能找到这个方法的说明。zlib的文档,有gzip输出的例子,里面就用到了pipe,即看即懂 :)

谢谢.
又回去看了看,在ClientResponse中看到了:
The response implements the Readable Stream interface.
唉,看得太粗心了。。。

@fish 嗯,懂了,谢谢 是可以这样解决

回到顶部