(7)http客戶端

2018-02-24 16:05 更新

要求

編寫一個程序來發(fā)起一個 HTTP GET 請求,所請求的 URL 為命令行參數(shù)的第一個。然后將每一個 “data” 事件所得的數(shù)據(jù),以字符串形式在終端(標準輸出 stdout)的新的一行打印出來。

提示

完成這個練習,需要使用 Node.js 核心模塊之一:http。

http模塊API文檔

http.get()?方法是用來發(fā)起簡單的 GET 請求的快捷方式,使用這個方法可以一定程度簡化程序。http.get()的第一個參數(shù)是GET 的URL,第二個參數(shù)則是回調函數(shù)。

與其他的回調函數(shù)不同,這個回調函數(shù)有如下這些特征:

function callback (response) { /* ... */ }

response 對象是一個 Node 的 Stream 類型的對象,可以將 Node Stream當做一個會觸發(fā)一些事件的對象,其中我們通常所需要關心的事件有三個: “data”,”error” 以及 “en”??梢韵襁@樣來監(jiān)聽一個事件:

response.on("data", function (data) { /* ... */ })

‘data’ 事件會在每個數(shù)據(jù)塊到達并已經(jīng)可以對其進行一些處理的時候被觸發(fā)。數(shù)據(jù)塊的大小將取決于數(shù)據(jù)源。

從?http.get()?所獲得的 response 對象/Stream 還有一個 setEncoding() 的方法。如果調用這個方法,并為其指定參數(shù)為 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);
});
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號