Bonjour, j'ai des problèmes pour effectuer une requête HTTP sur NodeJS avec un nombre plus grand d'objets json. La requête fonctionne bien, compte tenu de la petite collection d'objets json. Cependant, si j'essaie d'augmenter le tableau de taille de json, j'ai reçu Error: socket hang up {"error": {"code": "ECONNRESET"}}. Est-il nécessaire d'effectuer une écriture multiple? Ou est-ce que quelque chose ne va pas à l'autre extrémité?
Merci d'avance de prendre votre temps ici!
// data is a json object var post_data = JSON.stringify(data); var buf = new Buffer(post_data); var len = buf.length; var options = { hostname: address, port: port, path: pathName, method: 'PUT', headers: { 'Content-Type':'application/json', 'Content-Length': len, 'Transfer-Encoding':'chunked' } }; // http call to REST API server var req = restHttp.request(options, function(res) { console.log('server PUT response received.'); var resData = ''; res.on('data', function(replyData) { // Check reply data for error. console.log(replyData.toString('utf8')); if(replyData !== 'undefined') resData += replyData; }); res.on('end', function() { callback(JSON.parse(resData)); }); }); req.write(buf); req.end();
Vous pouvez diffuser le corps de demande.
Si les données dans buf
étaient dans un flux lisible, vous pouvez simplement faire buf.pipe(req)
.
Par exemple, si le répertoire actuel contient un fichier data.json
avec le JSON que vous pouvez faire
var buf = fs.createReadStream(__dirname + '/data.json');
Pour créer un objet ReadStream. Ensuite, vous pouvez répondre à vous
buf.pipe(req);
La commande de tuyau appelle req.end
une fois qu'il est fait en streaming.