J'envoie une demande HTTP à l'aide de la fonction http.Request, et j'aimerais lire l'ensemble de la réponse HTTP comme texte; c'est-à-dire le texte du protocole HTTP brut. C'est possible? J'ai écrit le code ci-dessous mais cela ne fonctionne pas.
// Set up the request console.log('Sending request'); var post_req = http.request(post_options, function(res) { res.setEncoding('utf8'); console.log('Response statusCode: ' + res.statusCode); // res.on('data', function (chunk) { // console.log('Response: ' + chunk); // }); // res.on('end', function() {}); }); post_req.on('socket', function (socket) { var response = ""; socket.on('data', function(chunk){ console.log(chunk); }); }); // post the data post_req.write(post_data); post_req.end();
3 Réponses :
Assumer que ces types d'outils sont autorisés dans votre environnement, vous pouvez organiser un proxy de débogage HTTP tel que Fiddler http: / /www.fiddler2.com/ , qui vous permet d'inspecter les appels et les réponses HTTP. P>
Streams2 et Streams1 ne sont pas toujours capables de bien fonctionner, voir "Problème: Streams1 et Streams2 Duality" dans cette vidéo .
J'ai essayé d'écouter des données à un niveau un peu plus bas que les flux et que ce code imprime la réponse HTTP brute avec des en-têtes pour moi: P>
var http = require('http'); var raw = ''; console.log('Sending request'); var req = http.request({host: 'stackoverflow.com'}, function(res) { watch(res, 'res'); res.on('end', function() { console.log(raw); }); res.on('data', function(data) { // if we don't attach 'data' handler here 'end' is not called }); }); req.on('socket', function (socket) { socket.resume(); var oldOndata = socket.ondata; socket.ondata = function(buf, start, end) { raw += buf.slice(start, end).toString(); oldOndata.call(socket, buf, start, end); }; }); req.end();
Si vous souhaitez accéder au message HTTP RAW, je vous suggère d'utiliser le module net Au lieu de cela, et écrivez vous-même la demande. Quelque chose comme ça pour une simple demande d'obtention: pour une requête postale Envoi où j'utilise tampon .bytelength parce que Si vous ne connaissez pas grand chose du format des messages HTTP, c'est un endroit décent pour démarrer: P > http://jmarshall.com/easy/http/ p> En outre, si vous ne savez pas ce que le codage de la réponse sera alors vous devrez d'abord analyser les en-têtes à découvrir, mais utf-8 est de loin le plus commun donc c'est un pari plutôt sûr. p> p> Application / X-www-Form-Urlencoded code> Les données, vous pouvez écrire la demande en utilisant quelque chose comme: p>
longueur de contenu code> nécessite la longueur en octets, pas dans les caractères. Aussi, rappelez-vous que
data code> doit être codé URL codé. P>
Peut-être utiliser un autre module de noeud pourrait vous aider, je ne suis pas sûr. Par exemple, le module code> code> est bien meilleur que le
http code>. Github.com/mikeal/request
de quoi avez-vous besoin du texte brut?