我正在尝试使用原生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模块。它有效!
答案 0 :(得分:8)
就我而言,问题实际上是我使用的HTTP客户端的默认行为axios
。
默认情况下,如果axios未找到请求的URL或127.0.0.1:80
方法(GET / POST / PUT),则会将我们重定向到http
。因此,如果也使用axios
,请检查您的URL。
答案 1 :(得分:4)
这里有几个问题:
hostname
结构的options
字段应该只是主机,而不是URL。在您的情况下,它应该是'news.google.com'
。
request
方法回调的签名为function (response)
- 您的签名为function (request, response)
。丢掉第一个参数。
如上所述,这将返回HTTP重定向到https站点。将var http = require('http');
替换为var https = require('https');
,然后使用https
,而不是http
。
答案 2 :(得分:2)
我的问题是使用supertest
和jest
时。我的错误是没有将“ /”作为某些URL的前缀。因此,请仔细检查您提出的请求的网址是否正确。
答案 3 :(得分:2)
我正在使用axios,此错误与get请求一起发生,通过在我的网址(在我的情况下,服务器为http)之前添加http://来解决了该错误
答案 4 :(得分:-3)
按 Ctrl + C (关闭博览会服务器)。 当博览会仪表板成功停止后,请运行以下命令:
expo build: android