获取请求失败并出现错误:连接 ECONNREFUSED

Posted

技术标签:

【中文标题】获取请求失败并出现错误:连接 ECONNREFUSED【英文标题】:Get Reqeust fails with Error: connect ECONNREFUSED 【发布时间】:2019-06-12 15:33:26 【问题描述】:

我正在尝试向服务器发送一个获取请求。但是我收到以下错误,知道如何避免错误吗?

错误:

events.js:183 投掷者; // 未处理的“错误”事件 ^

错误:连接 ECONNREFUSED ****** 在 Object._errnoException (util.js:992:11) 在 _exceptionWithHostPort (util.js:1014:20) 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1186:14)

我的要求:

var https = require("https");

// Update these options with the details of the web service you would like to call
var options = 
  method: 'GET',
  uri: 'https:*****',
  resolveWithFullResponse: true,
  json: true
;

var req = https.request(options, res => 
  res.setEncoding('utf8');
  var returnData = "";

  res.on('data', chunk => 
    returnData = returnData + chunk;
  );
  res.on('end', () => 
    console.log('returndata: ' + JSON.stringify(returnData))
    var pop = JSON.parse(returnData).population;
    callback(pop);
  );
);
req.end();

【问题讨论】:

【参考方案1】:

这是一个例子,你不能像这样在选项对象上设置 uri,你要么使用 uri 字符串/URI 对象,要么为此请求类型使用选项对象(请参阅Node.js http.request docs)

const https = require('https');

const options = 
    hostname: 'jsonplaceholder.typicode.com',
    path: '/todos/1',
;

const req = https.request(options, (res) => 
    let returnData = "";

    res.on('data', chunk => 
        returnData = returnData + chunk;
    );

    res.on('end', () => 
        console.log('returndata: ', returnData);
    );
);

req.on('error', (e) => 
    console.error(e);
);

req.end();

【讨论】:

【参考方案2】:

有两种方法可以定义要传递给https.request()的请求选项:

    通过将hostnamepath 和(可选)port 指定为单独的请求选项:

    var options = 
      method: 'GET',
      hostname: 'jsonplaceholder.typicode.com',
      path: '/posts/1',
      port: 443
    ;
    

    通过使用创建url.URL 的实例:

    var URL = require('url').URL;
    var options = new URL('https://jsonplaceholder.typicode.com/posts/1');
    

    更多信息请参考官方documentation。

【讨论】:

以上是关于获取请求失败并出现错误:连接 ECONNREFUSED的主要内容,如果未能解决你的问题,请参考以下文章

当我的应用程序进入前台时运行请求失败,并显示“网络连接已丢失”。

如果连接了 Socket.io,Alamofire 请求总是失败并显示“请求超时”

错误:您所请求的网址(URL)无法获取 怎么搞的?

适用于 excel 的 BigQuery 连接器 - 请求失败:错误。无法执行查询。获取 URL 时超时

python 请求:对天蓝色的 PUT 请求失败并出现 415 错误

单元测试 - Wiremock 验证失败并出现连接错误