57 votes

Obtenir l'intégralité du corps de la réponse lorsque la réponse est fragmentée ?

Je fais une requête HTTP et j'écoute les "données":

 response.on("data", function (data) { ... })

Le problème est que la réponse est fragmentée, de sorte que les "données" ne sont qu'une partie du corps renvoyée.

Comment faire renvoyer le corps entier ?

76voto

pero Points 7952
request.on('response', function (response) {
  var body = '';
  response.on('data', function (chunk) {
    body += chunk;
  });
  response.on('end', function () {
    console.log('BODY: ' + body);
  });
});
request.end();

28voto

Jim Danz Points 309

Sur https://groups.google.com/forum/?fromgroups=#!topic/nodejs/75gfvfg6xuc , Tane Piper fournit une bonne solution très similaire à celle de scriptfromscratch, mais pour le cas d'une réponse JSON :

   request.on('response',function(response){
     var data = [];
     response.on('data', function(chunk) {
       data.push(chunk);
     });
     response.on('end', function() {
       var result = JSON.parse(data.join(''))
       return result
     });
   });`

Cela résout le problème soulevé par OP dans la section commentaires de la réponse de scriptfromscratch.

6voto

schaermu Points 6251

Je n'ai jamais travaillé avec la bibliothèque HTTP-Client, mais comme cela fonctionne exactement comme l'API du serveur, essayez quelque chose comme ceci :

 var data = '';
response.on('data', function(chunk) {
  // append chunk to your data
  data += chunk;
});

response.on('end', function() {
  // work with your data var
});

Voir la documentation de node.js pour référence.

3voto

Martin Points 197

La raison pour laquelle c'est foiré est que vous devez appeler JSON.parse(data.toString()). Les données sont un tampon, vous ne pouvez donc pas simplement les analyser directement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X