Javascript 尝试使用node.js中的http.get访问API时出错
我是node.js中的乞丐,现在我正试图从http.get获取API的结果。但是,在运行代码时,我收到以下错误:Javascript 尝试使用node.js中的http.get访问API时出错,javascript,node.js,Javascript,Node.js,我是node.js中的乞丐,现在我正试图从http.get获取API的结果。但是,在运行代码时,我收到以下错误: Error: getaddrinfo ENOTFOUND Error: getaddrinfo ENOTFOUND at errnoException (dns.js:37:11) at Object.onanswer [as oncomplete] (dns.js:124:16) 我正确地要求http(我已经测试过了) 以下是我的函数来说明问题: function getData
Error: getaddrinfo ENOTFOUND
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)
我正确地要求http(我已经测试过了)
以下是我的函数来说明问题:
function getData(apiUrl, getUrl) {
var options = {
host : apiUrl,
port : 80,
path : getUrl
};
var content = "";
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
res.on("data", function(chunk) {
content += chunk;
console.log(content);
});
}).on('error', function(e) {
console.log("Error: " + e.message);
console.log( e.stack );
});
}
这样说:
getData('https://api.twitter.com', '/1/statuses/user_timeline.json?&screen_name=twitter&callback=?&count=1');
希望你能帮助我,谢谢 您必须使用https而不是http模块。看见 在options对象中,“host”应该只是主机名,即api.twitter.com。 不需要指定端口,但在https的情况下“80”是错误的。HTTPS是443,除非另有明确规定 您可以生成如下正确选项:
parseURL = require('url').parseURL;
parsedURL = parseURL(apiURL);
var options = {
hostname : parsedURL.hostname,
path : getUrl
};
为了提高效率,最好在getData函数之外定义parseURL函数
如果getData函数同时支持http和https URL很重要,那么可以检查parsedURL.protocol。如果是“https”,则使用
https.get
,如果是“http”,则使用http.get
始终尝试使用hostname
而不是host
,这样您就可以兼容url.parse()
(根据)。谢谢你们两位!现在它正在运行!谢谢你的评论,查德。我已经相应地编辑了我的答案。