![](/img/trans.png)
[英]getting Error: getaddrinfo ENOTFOUND while performing rest api call in node.js using http.request
[英]getaddrinfo ENOTFOUND with Node.js http.request()
我正在尝试按照这里的badgekit教程https://github.com/mozilla/badgekit-api/wiki/Using-BadgeKit-API#references
但是,我得到的错误是我的语法出现节点错误(我认为)。 这就是我在RetrieveBadgeData.js文件中所拥有的
var http = require("http");
var jws = require('jws');
var claimData = {
header: { typ: 'JWT', alg: 'HS256' },
payload: {
key: 'mastersecret',
exp: Date.now() + (1000 * 60),
method: 'GET',
path: '/systems'
},
secret: 'mastersecret'
};
var requestOptions = {
host: 'http://192.168.1.59:8080',
path: '/systems',
method: 'GET',
headers: { 'Authorization': 'JWT token="' + jws.sign(claimData) + '"' }
};
var apiRequest = http.request(requestOptions, function (apiResult) {
apiResult.on('data', function (badgeData) {
//process badgeData
});
});
如果浏览到192.168.1.59:8080,如果节点API正在运行,我会得到您应该返回的信息。但是,当我运行节点RetrieveBadgeData.js(执行上面的代码)时,出现此错误。
events.js:72
throw er; // unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)
有任何想法吗?
编辑我也尝试过,这给了我同样的错误
var requestOptions = {
hostname: 'http://192.168.1.59'
, port: 8080
, path: '/systems/badgekit/badges'
, method: 'GET'
, headers: { 'Authorization': 'JWT token="' + jws.sign(claimData) + '"' }
};
问题是您如何指定主机:
host: 'http://192.168.1.59:8080'
使用此代替:
hostname: '192.168.1.59`,
port: 8080
http://
是协议,而不是主机。 您收到的错误是Node.js无法解析您提供的主机名。 Node.js文档还建议使用hostname
优先于host
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.