跳到主要内容
CNode

用http.get后,用ClientResponse怎么取得请求的URL输出的文本啊?

社区
Wwimlwiml发布于 15 年前最后回复 15 年前
10113970

代码:


        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)

W
wimlwiml#915 年前
引用 wimlwimlpipe?? 官方文档没查到这个,回头试试

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

F
fish#815 年前
引用 wimlwimlpipe?? 官方文档没查到这个,回头试试

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

F
fish#715 年前
引用 wimlwiml哦,知道了, <pre <code res.on('data', function (chunk) { console.log('BODY: ' + chunk); }); </code </...

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

W
wimlwiml#615 年前

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

W
willwen#515 年前

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

res.pipe(process.stdout);

W
wimlwiml#415 年前
引用 wimlwiml哦,知道了, <pre <code res.on('data', function (chunk) { console.log('BODY: ' + chunk); }); </code </...

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

W
wimlwiml#315 年前
引用 wimlwiml哦,知道了, <pre <code res.on('data', function (chunk) { console.log('BODY: ' + chunk); }); </code </...

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

W
wimlwiml#115 年前

哦,知道了,


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

参与回复

登录后即可参与回复。登录