尝试HTTP请求时获取连接ECONNREFUSED 127.0.0.1:80

我正尝试使用本机node.js http模块向news.google.com发出http请求。 当我尝试以下操作时,出现connect ECONNREFUSED 127.0.0.1:80错误

 var http = require('http'); var payload = JSON.stringify({ name: 'John Smith', email: 'john.smith@smith.com', resume: 'https://drive.google.com/open?id=asgsaegsehsehseh' }); var options = { hostname: 'https://news.google.com', path: '/', method: 'GET' }; var httpRequest = http.request(options, function(request, response) { console.log('STATUS', response.statusCode); response.setEncoding('utf8'); response.on('data', function(chunk) { console.log('BODY:', chunk); }); response.on('end', function() { console.log('No more data in response'); }); }); httpRequest.on('error', function(e) { console.log('Error with the request:', e.message); }); httpRequest.write(payload); httpRequest.end(); 

为什么我得到这个错误?

我尝试使用request npm模块。 它的工作!

这里有几个问题:

  1. options结构的hostname段应该只是主机,而不是URL。 在你的情况下,它应该只是'news.google.com'

  2. request方法的callback签名是function (response) – 你的function (request, response)function (request, response) 。 失去第一个参数。

  3. 正如所写,这将一直返回到https站点的HTTPredirect。 replacevar http = require('http');var https = require('https'); 然后使用https来代替http