2016-01-20 66 views
1

我是nodejs的新手,我有一個奇怪的問題試圖獲取我的響應的正文。好吧,爲了打印出身體,我們可以做這樣的事情,對吧? :獲取https響應的主體

var https = require('https'); 
var request = https.get('https://teamtreehouse.com/arshankhanifar.json',function(response){ 
    //print the data 

    response.setEncoding('utf8'); 
    response.on('data', function (chunk){ 
     console.log('BODY : ' + chunk); // Prints the body, no problem. 
    }); 
    response.on('end', function() { 
     console.log('No more data in response.'); 
    }); 
}); 

與上面的代碼,我可以打印出身體,這應該是包含一個JSON文件中的字符串,但問題是,當我嘗試將其保存在一個名爲body變量,當我打印出來,沒有出現! :

var https = require('https'); 
var request = https.get('https://teamtreehouse.com/arshankhanifar.json',function(response){ 
    //save the data in a variable 
    var body = ''; 

    response.setEncoding('utf8'); 
    response.on('data', function (chunk){ 
     body += chunk; 
    }); 

    console.log(body); // prints nothing! 
    response.on('end', function() { 
     console.log('No more data in response.'); 

    }); 
}); 

我希望我的問題很清楚。如果不明確,請要求澄清。

+1

移動'的console.log(身體);'裏面的'上( '端' ...'功能 – SlashmanX

+0

喲感謝您忠實的你聰明 –

+0

' body + = chunk' not'body + = data';你還需要在正確的回調中記錄它 –

回答

1

在觸發data之前,您正在打印身體變量。

請嘗試如下。

var https = require('https'); 
var request = https.get('https://teamtreehouse.com/arshankhanifar.json',function(response){ 
    //save the data in a variable 
    var body = ''; 

    response.setEncoding('utf8'); 
    response.on('data', function (chunk){ 
     body += chunk; 
    }); 

    response.on('end', function() { 
     console.log(body); // prints nothing! 
     console.log('No more data in response.'); 

    }); 
}); 

參見:!!!
https://nodejs.org/api/https.html#https_https_get_options_callback

+0

明白了!謝謝! –

+0

如果你的問題解決了,或者讓我們知道目前存在什麼問題,請接受答案 –

+0

I接受它,對不起,新的stackoverflow :) –