【问题标题】:calling a third party rest api from node从节点调用第三方rest api
【发布时间】:2017-02-14 15:52:21
【问题描述】:

我正在开发一个简单的 nodejs 应用程序。我正在尝试从该应用程序进行 REST API 调用,并且 REST API 具有基本身份验证。我收到错误 "ERRORError: getaddrinfo ENOTFOUND" 尝试使用 stackoverflow 中建议的选项,但无法使其工作。任何人都可以帮我解决这个问题。这是我正在使用的代码`

var http = require('http');

var url = 'someurl';
var username = 'username';
var password = 'password';
var optionsget = {
  host: 'someurl',
  method: 'GET',
  auth: username + ':' + password,
  headers: {
     'Accept': 'application/json',
     'Content-Type': 'application/json'
  }
};

console.log('Do the GET call');

// do the GET request
var reqGet = http.get(optionsget, function(res) {
    console.log("Hii");
    console.log("statusCode: ", res.statusCode);

    res.on('data', function(d) {
        console.info('GET result:\n');
        process.stdout.write(d);
        console.info('\n\nCall completed');
    });

});

reqGet.end();
reqGet.on('error', function(e) {
    console.error("ERROR" +e);
});

提前致谢
问候
录像机

【问题讨论】:

  • thomas .. 我已经尝试了在 stackoverflow 上找到的所有可能的方法...我也无法 ping 通..我尝试 ping 通 www.google.com 。获取所有 ping 的连接超时错误
  • 可以分享一下网址吗?
  • 您传递的实际网址是什么?它是一个完全限定的 URL,例如 http://somedomain.com/somepath

标签: node.js rest http basic-authentication


【解决方案1】:

www.google.com 不是有效的 URL。浏览器允许您键入它(这往往使人们认为它应该在所有情况下都可以工作),但这只是因为在幕后,浏览器会猜测您要键入http://www.google.com

http 模块需要一个完全限定的 URL,例如 http://www.google.com,或者它需要您在 options 对象中单独指定主机、路径和协议。但是,如果您只是要传递一个 URL,那么它必须是一个完整的 URL。详情见the node.js doc

【讨论】:

  • @user1948228 - 这回答了你的问题吗?如果是这样,那么您可以通过单击答案左侧的绿色复选标记向社区表明这一点。这也将为您在堆栈溢出时遵循正确的程序赢得一些声誉积分。
猜你喜欢
  • 2021-07-16
  • 1970-01-01
  • 2020-06-28
  • 2017-09-29
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
相关资源
最近更新 更多