我是一个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(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');希望你能帮助我,谢谢!
发布于 2013-03-24 09:14:17
您必须使用https而不是http模块。参见options对象中的http://nodejs.org/api/https.html,"host“应该只是主机名,即api.twitter.com。指定port不是必须的,但如果是https,则"80“是错误的。HTTPS为443,除非另有明确指定。
您可以生成如下所示的正确选项:
parseURL = require('url').parseURL;
parsedURL = parseURL(apiURL);
var options = {
hostname : parsedURL.hostname,
path : getUrl
};为了提高效率,最好在getData函数外部定义parseURL函数。
如果你的getData函数同时支持http和https urls是很重要的,你可以检查parsedURL.protocol。如果是"https",则使用https.get;如果是"http",则使用http.get。
https://stackoverflow.com/questions/15593848
复制相似问题