2013-03-30 22 views
15

Sto facendo un richiesta HTTP utilizzando il modulo di Node http, ma sul data, il pezzo restituita non sembra accontentarsi della risposta richiesta completa. Ecco il mio codice:richiesta Node.js HTTP non restituendo piena risposta

var req = http.request(httpOptions, function(res) { 
    res.setEncoding('utf8'); 
}); 

req.on('response', function (response) { 
    response.on('data', function (chunk) { 
     console.log(chunk); 
     callback(null, JSON.parse(chunk)); 
    }); 
}); 

req.on('error', function(e) { 
    callback(e); 
    //callback(e.message); 
}); 

req.end(); 

Esiste un modo di aspettare la completa uscita prima di terminare la richiesta? Sto facendo qualcosa di sbagliato? Grazie!

+0

Da dove la variabile 'response' viene? –

+0

Penso che tu abbia bisogno di un 'res.end();' –

+0

Penso che il mio editore l'abbia accidentalmente corretto automaticamente, l'ho corretto per la domanda (nel mio editor era tutto a posto). – jpmonette

risposta

41

si dovrebbe anche ascoltare il 'fine' evento

req.on('response', function (response) { 

    var data = ""; 

    response.on('data', function (chunk) { 
     console.log(chunk); 
     data += chunk; 
    }); 

    response.on('end', function(){ 
     callback(data); 
    }) 

}); 
+0

Grazie, totalmente funzionante :) – jpmonette

+2

felice di sentirlo :) – Andbdrew

Problemi correlati