1. 程式人生 > >nodejs自帶的請求方法--http.request

nodejs自帶的請求方法--http.request

本文是接著前面的,用nodejs獲取到本地檔案的內容之後的操作。

當獲取完本地檔案的內容後,假設內容為相關的url連結,用ajax請求獲取資料,這種方法是基於瀏覽器的,所以執行效率都是依賴於瀏覽器。

但是用nodejs也可以實現獲取資料,並且是基於作業系統的,效率上遠遠超過瀏覽器方式。

下面來細說如何操作:

1.先宣告一個通用方法來進行資料的請求

var http=require("http"); //匯入需要的http庫
function HttpRequest(option,callback){  //option設定請求的請求頭,callback請求資料回撥函式
    var con='';  //存放請求後的資料
    var req=http.request(option,function(res){  //http。request方法用於獲取資料
        res.setEncoding('utf-8');  //設定響應字符集
        var resListener=setTimeout(function(){  //新增響應監聽,20s後沒有響應資訊返回自動結束響應,並返回空資料
            res.destroy(); //結束響應
            con='';
            callback(con);
        },20000);
        res.on('data',function(chuck){ //響應返回資料,並接受
            if(chuck) con+=chuck;    
        }).on('end',function(){ //資料返回完畢
            clearTimeout(resListener);
            callback(con);
        });
    });
    req.on('error',function(e){ //響應出錯呼叫函式
        console.log('錯誤為:'+e.message);
    });
    req.write(''); //傳送請求
    req.end(); //結束請求
}
2.寫一個方法呼叫上面的方法:
function doEngine(data,callback){
    var option={ //設定請求頭資訊
        host:data.host, //域名
        path:data.path, //資源地址
        method:'GET', //請求方式
        headers:{ //請求頭資訊
            'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36'
        }
    }
    HttpRequest(option,function(obj){
        callback(obj);
    });
}

3.寫一個主函式執行:
function run(data){
    if(data){
        //data= ....(data); 對資料進行適當的處理
        doEngine(data,function(obj){
            if(obj){
                //對返回的資料進行相應的處理,不細說,根據實際情況而定
            }
        });
    }

}

4.最後呼叫之前寫的getContent()方法來獲取要請求的請求頭資訊
getContent(rs,run);