[Node.js] 學習筆記:使用 http 模組取得網頁內容
Learnyounode 的第七課,是用 http 模組來送出 GET 請求,
來取得一個網頁的內容~
要送出 GET 請求,用的是 http.get() 函式,
給它一個 URL,再加上一個 callback 來處理 response。
同時註冊一個 “error” callback,這樣如果無法連上時,可以作些處理:
http = require("http"); // Send http request var req = http.get(process.argv[2], function(response) { // Deal with response }); // Register "error" callback for the http request req.on("error", function(err) { console.log(err); });
上面的程式其實有個疑問啦…
http.get() 先被呼叫了,傳回一個 req 物件,
而我們在拿到這物件之後,才去呼叫 req.on() 設定 error callback…
這樣子的話,究章這個 http 連線會先連出去呢?還是在作完 req.on() 後才連出去呢?
假設連線在呼叫時,在底層就同時連出去的話,遇到的 error 就有可能不會呼叫到 error callback 了…
現在我還不太熟 Node.js,不過看起來會先執行到 req.on()…
另外一個小問題時,這邊的 URL 必須是類似 http:// 開頭的,
像是 http://www.google.com,如果是 www.google.com,
就會得到 ECONNREFUSED 這個錯誤~
接下來,在連線成功的狀況下,就可以藉由 http.get() 的第二個參數 callback,
得到 response 物件,只要設定一下 encoding 和 “data” callback,
就能取得資料,下面就是最後的完整程式:
http = require("http"); // Send http request var req = http.get(process.argv[2], function(response) { // Set encoding so that response would be strings response.setEncoding("utf-8"); // Register "data" callback response.on("data", function(data) { console.log(data); }); }); // Register "error" callback for the http request req.on("error", function(err) { console.log(err); });
(本頁面已被瀏覽過 333 次)