Http请求在Node.JS中不起作用?

时间:2017-08-01 04:28:07

标签: javascript node.js http http-get

我现在很困惑。我已经尝试了一切,但仍然无法让它发挥作用。基本上,我试图获取网站的 HTML ,但它只适用于Google。这是我的代码:



const HttpClient = {
    get: function(url, callback) {
        var str = '';
        var req = http.get(url, function(response) {
            response.on('data', function (chunk) {
                str += chunk;
            });
            response.on('end', function () {
                callback(str);
            });
        }).on;
        return true
    }
}
HttpClient.get('http://www.google.com/index.html', (data) => {
    console.log(data);
});




您可以看到我提供的网址是 google.com 。这是我发现的唯一实际返回的URL。用其他任何东西替换URL将使它不返回任何内容。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

点击蓝色的“运行代码段”按钮并检查错误消息。

{   “message”:“未捕获的ReferenceError:http未定义”,   “filename”:“https://stacksnippets.net/js”,   “lineno”:23,   “colno”:11 }

您需要确保您需要节点的http模块。

我能够使用您的确切代码成功发出GET请求(尽管使用了不同的网址)并且在需要http模块之后。

更新为使用https:

const https = require('https')

const HttpClient = {
    get: function(url, callback) {
        var str = '';
        var req = https.get(url, function(response) {
            response.on('data', function (chunk) {
                str += chunk;
            });
            response.on('end', function () {
                callback(str);
            });
        })

        return true
    }
}

HttpClient.get('https://www.youtube.com/watch?v=oRvwlX3ihRg', (data) => {
    console.log(data)
}, (error) => {
    console.log(error)
});