使用http.request()但使用http.get()时出现ENOTFOUND错误

时间:2019-07-08 13:07:48

标签: node.js http get

我在尝试执行简单的GET请求时,NodeJS遇到了一个奇怪的错误。 这对我有用:

   http.get('http://54.241.239.69:8332/', function(res){
            var str = '';
            res.on('data', function (chunk) {
                   str += chunk;
             });

            res.on('end', function () {
                 //console.log(str);
                 clientRes.send(str);
            });
      });

但是,当尝试像这样使用request做同样的事情时:

const options = {
    hostname: 'http://54.241.239.69',
    port: 8332,
    path: '/',
    method: 'GET'
  }

  const req = https.request(options, (res) => {
    console.log(`statusCode: ${res.statusCode}`)

    res.on('data', (d) => {
      process.stdout.write(d)
    })
  })

  req.on('error', (error) => {
    console.error(error)
  })

  req.end()

它给我一个Error: getaddrinfo ENOTFOUND http://54.241.239.69 http://54.241.239.69:8332错误。

为什么get()起作用但request()不起作用? 谢谢。

1 个答案:

答案 0 :(得分:2)

hostname不接受协议。因此它将只是54.241.239.69

此外,由于链接具有https协议,因此您可能需要将http模块更改为http

const options = {
    hostname: '54.241.239.69',
    port: 8332,
    path: '/',
    method: 'GET'
}

注意::ENOTFOUND是DNS错误,表示它无法解析主机名。