Continuez à avoir de mauvaises requêtes de HTTP.request dans Node.js

Je viens d’installer Node.js et il me manque peut-être quelque chose, mais j’essaie une simple requête http et ne reçois que 400 réponses. J’ai essayé plusieurs hôtes sans succès. J’ai installé Node à partir de leur site, cela ne fonctionnait pas, alors j’ai désinstallé et installé via Homebrew et obtenir le même résultat de “400”. Je me demande en particulier s’il y a quelque chose que je dois changer sur mon Mac pour permettre à Node d’envoyer des demandes.

OSX 10.8.4 Node 0.10.13 Homebrew 0.9.4

var http = require("http"); var req = http.request({ host: "http://google.com" }, function(res){ if (res.statusCode === 200) console.log(res); else console.log(res.statusCode); }); req.on("error", function(err){ console.log(err); }); req.end(); 

J’apprécie toute aide. Merci!

Le http: // dans votre hôte est source de confusion. Essayez de passer à “www.google.com”. C’est une requête http, inutile de vous répéter 🙂

Avez-vous essayé de supprimer le paramètre http:// de votre paramètre host ? J’utilise souvent l’utilitaire url pour des choses comme celle-ci. Il va automatiquement parsingr une URL dans les parties correctes à transmettre à http.request .

 var url = require('url'), link = url.parse('http://www.google.com/'); var req = http.request({ host: link.hostname, path: link.path, port: link.port }, function(res){ if (res.statusCode === 200) console.log(res); else console.log(res.statusCode); }); 

En outre, je m’assurerais de capturer l’événement d’erreur également au cas où une erreur serait renvoyée. De la docs:

 req.on('error', function(e) { console.log('problem with request: ' + e.message); }); 

Si vous avez juste besoin d’une réponse GET , vous pouvez également utiliser http.get place. De la docs:

 http.get("http://www.google.com/index.html", function(res) { console.log("Got response: " + res.statusCode); }).on('error', function(e) { console.log("Got error: " + e.message); });