2017-04-13 41 views
0

代碼:如何從請求獲取數據的NodeJS

function getpage(link){ 
    var data = []; 
    var options = { 
    method: 'GET', 
    uri: link, 
    headers: { 
     'Authorization': 'Basic ' + new Buffer("c64f80ba83d7cfce8ae74f51e263ce93:").toString('base64') 
    } 
    }; 
    request(options, function (err, response, body) { 
     console.log(body); 
     data.push(body); 
    }); 
    return data; 
} 
console.log(getpage('https://docs.google.com/feeds/get_video_info?formats=ios&mobile=true&docid=0BxG6kVC7OXgrQ1V6bDVsVmJMZFU')); 

但數據在開發控制檯返回是null。我做錯了什麼?

+0

能否請你解釋一下,你正在試圖在這裏做的,你覺得哪裏出了問題? –

+0

我想從https://docs.google.com/feeds/get_video_info?formats=ios&mobile=true&docid=0BxG6kVC7OXgrQ1V6bDVsVmJMZFU獲取數據正文 –

+0

看起來給定鏈接中的數據是二進制的。如果是文本/ json數據,那麼你可以在jQuery '$().load();' –

回答

0

請求會在未來給你一個結果。它的異步和處理它的方式。

第一種方法是使用回調函數原樣

function getpage(link, callback){ 
    var options = { 
    method: 'GET', 
    uri: link, 
    headers: { 
     'Authorization': 'Basic ' + new Buffer("c64f80ba83d7cfce8ae74f51e263ce93:").toString('base64') 
    } 
    }; 
    request(options, function (err, response, body) { 
     callback(body); 
    }); 
} 

GETPAGE( '你的鏈接',執行console.log); //通過回調調用函數;

第二種方法,使用承諾(建議易) 使用Request-PromiseAxios庫則 -

var rp = require('request-promise'); 
rp('http://www.google.com') 
    .then(function (htmlString) { 
     // Process html... 

    }) 
    .catch(function (err) { 
     // Crawling failed... 
    }); 
+0

這樣工作,謝謝你! –

+0

var body = getpage('your link',console.log);如何工作? sr console.log(body); –

+0

你的問題不清楚給我。 –