1

我正在使用 node.js 我写了一个小代码

var http = require('http');


 var options = {
  hostname: 'www.google.com',
  port: 80,
  path: '/upload',
  method: 'POST'
};

var req = http.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});

req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

// write data to request body
req.write('data\n');
req.write('data\n');
req.end();

我必须发送发布请求才能开始我正在发出获取请求,为什么没有 http.get()。在这个请求中我得到 404 响应代码,这也是一个错误。但没有在 req.on('error') 中捕获。我想知道这个方法捕获了哪种错误??

4

1 回答 1

-1

来自http.request 文档

如果在请求期间遇到任何错误(可能是 DNS 解析、TCP 级别错误或实际 HTTP 解析错误),则会在返回的请求对象上发出“错误”事件。

所以可能只有在协议/连接级别出现错误时才会发出该事件。

然后,您可以在connect调用中处理 HTTP 错误:

var req = http.request(options, function(res) {
  if (res.statusCode == "404"){ ... }
  else if (...) {
      ...
  } else { // everything ok
      console.log('STATUS: ' + res.statusCode);
      console.log('HEADERS: ' + JSON.stringify(res.headers));
      ...
  }
});
于 2013-10-04T13:37:03.490 回答