## 要求
編寫一個程序來發起一個 HTTP GET 請求,所請求的 URL 為命令行參數的第一個。然后將每一個 “data” 事件所得的數據,以字符串形式在終端(標準輸出 stdout)的新的一行打印出來。
## 提示
完成這個練習,需要使用 Node.js 核心模塊之一:http。
[http模塊API文檔](file:///D:/Work/Nodejs/node_modules/learnyounode/node_apido/http.html)
`http.get()`?方法是用來發起簡單的 GET 請求的快捷方式,使用這個方法可以一定程度簡化程序。`http.get()`的第一個參數是GET 的URL,第二個參數則是回調函數。
與其他的回調函數不同,這個回調函數有如下這些特征:
~~~
function callback (response) { /* ... */ }
~~~
response 對象是一個 Node 的 Stream 類型的對象,可以將 Node Stream當做一個會觸發一些事件的對象,其中我們通常所需要關心的事件有三個: “data”,”error” 以及 “en”。可以像這樣來監聽一個事件:
~~~
response.on("data", function (data) { /* ... */ })
~~~
‘data’ 事件會在每個數據塊到達并已經可以對其進行一些處理的時候被觸發。數據塊的大小將取決于數據源。
從?`http.get()`?所獲得的 response 對象/Stream 還有一個 setEncoding() 的方法。如果調用這個方法,并為其指定參數為 utf8,那么 data 事件中會傳遞字符串,而不是標準的 Node Buffer 對象,這樣,也不用再手動將 Buffer 對象轉換成字符串了。
## 代碼
~~~
var http = require('http');
http.get(process.argv[2], function (response) {
response.setEncoding('utf8');
response.on('data', console.log);
response.on('error', console.error);
});
~~~