首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试在node.js中使用http.get访问API时出错

尝试在node.js中使用http.get访问API时出错
EN

Stack Overflow用户
提问于 2013-03-24 08:45:47
回答 1查看 4.4K关注 0票数 0

我是一个node.js的乞讨者,现在我正试图从http.get那里得到API的结果。但是,在运行代码时,我收到了这个错误:

代码语言:javascript
复制
Error: getaddrinfo ENOTFOUND
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)

我正确地请求了http (我已经测试过了),下面是我的函数来说明这个问题:

代码语言:javascript
复制
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 );
    });

}

并这样称呼它:

代码语言:javascript
复制
getData('https://api.twitter.com', '/1/statuses/user_timeline.json?&screen_name=twitter&callback=?&count=1');

希望你能帮助我,谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2013-03-24 09:14:17

您必须使用https而不是http模块。参见options对象中的http://nodejs.org/api/https.html,"host“应该只是主机名,即api.twitter.com。指定port不是必须的,但如果是https,则"80“是错误的。HTTPS为443,除非另有明确指定。

您可以生成如下所示的正确选项:

代码语言:javascript
复制
    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

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15593848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档