Javascript 尝试使用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

我是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');

希望你能帮助我,谢谢

您必须使用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()
(根据)。谢谢你们两位!现在它正在运行!谢谢你的评论,查德。我已经相应地编辑了我的答案。