2

Facebook グラフ API を使用しているときに、https.get を使用して Facebook ユーザー データを要求しました。

var optionsP = {
        host: 'graph.facebook.com',     
        path: '/me?access_token=XXXX'
    };

    https.get(optionsP, function(resp) {                                        
        resp.on('data', function(d) {                                   
            console.log('ondata')
            console.log(d.length)
            process.stdout.write(d)
        }); 
    }).on('error', function(e) {
        console.error(e);
});

しかし、応答データは 2 つの部分として提供されます。最初に最大 1034 文字を出力すると、同じコールバックが機能し、残りの 1347 文字が出力されます。これらの部分的な応答の理由は何ですか?

4

1 に答える 1

8

それは正常です。respストリームです。これはClientResponseオブジェクトであり、読み取り可能なストリームインターフェイスを実装します。ドキュメントは次のとおりです:http://nodejs.org/api/http.html#http_http_clientresponse

ストリームを受け入れる場所に出力をパイプするか、「end」イベントを受信するまでそれをバッファーに保管することができます。

すべてが到着するまで、データをメモリ内の文字列に格納する例を次に示します。

https.get(optionsP, function(resp) {                                        
    resp.setEncoding(); //Now the data is a string!
    var store = "";
    resp.on('data', function(d) {
        store += d;
    }); 
    resp.on('end', function() {
        console.log("this is all: " + store);
    });
}).on('error', function(e) {
    console.error(e);
});
于 2012-08-05T11:35:32.920 に答える