其中使用nodejs中的request包设置post请求的超时

qv7cva1a  于 2023-06-05  发布在  Node.js
关注(0)|答案(2)|浏览(444)

我正在使用request包进行发布请求。如何在请求时设置超时500毫秒。

var request = require('request');

request({
      url: 'myUrl',
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'authToken': 'myToken'
      },
      timeout: 500,
      json: infoObj
    })
      .on('response', function(response) {
        console.log('request response=============',response.statusCode)

      })
      .on('error', function(err) {
          console.log('error===',err);
      });

当尝试使用超时时:500,上面的例子出错
{ Error:ETIMEDOUT at Timeout._onTimeout(F:\gomean\globeone\node_modules\request\request.js:796:17)at tryOnTimeout(timers.js:224:11)at Timer.listOnTimeout(timers.js:198:5)code:'ETIMEDOUT',连接:真的

2w3kk1z5

2w3kk1z51#

申请单据:timeout-包含在中止请求之前等待服务器发送响应头(并启动响应体)的毫秒数的整数。

var request = require('request');

request({
      url: 'myUrl',
      method: 'POST',

      timeout: 500,

      headers: {
        'Content-Type': 'application/json',
        'authToken': 'myToken'
      },
      json: infoObj
    })
      .on('response', function(response) {
        console.log('request response=============',response.statusCode)

      })
k5ifujac

k5ifujac2#

您需要包含一个回调来捕获错误。来自文档:
您可以通过检查err.code中的'ETIMEDOUT'值来检测超时错误。此外,通过检查err.connect属性是否设置为true,可以检测超时是否为连接超时。
举个例子:

request.get('http://10.255.255.1', {timeout: 1500}, function(err) {
    console.log(err.code === 'ETIMEDOUT');
    // Set to `true` if the timeout was a connection timeout, `false` or
    // `undefined` otherwise.
    console.log(err.connect === true);
    process.exit(0);
});

相关问题