使用http.request()但是http.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()?谢谢。

hostname不使用协议。因此,它将只是54.241.239.69

另外,您可能需要将https模块更改为http,因为您的链接具有http协议。

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

注意: enotfound是DNS错误,这意味着它无法解析主机名。

最新更新