用http.get后,用ClientResponse怎么取得请求的URL输出的文本啊?
发布于 3年前 作者 wimlwiml 2573 次浏览

代码:


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

怎么取得请求URL输出的文本啊?

10 回复

哦,知道了,


res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
});

注意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 嗯,懂了,谢谢 是可以这样解决

回到顶部