nodejs自帶的請求方法--http.request
阿新 • • 發佈:2019-01-23
本文是接著前面的,用nodejs獲取到本地檔案的內容之後的操作。
當獲取完本地檔案的內容後,假設內容為相關的url連結,用ajax請求獲取資料,這種方法是基於瀏覽器的,所以執行效率都是依賴於瀏覽器。
但是用nodejs也可以實現獲取資料,並且是基於作業系統的,效率上遠遠超過瀏覽器方式。
下面來細說如何操作:
1.先宣告一個通用方法來進行資料的請求
2.寫一個方法呼叫上面的方法: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(); //結束請求 }
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);