【发布时间】:2013-08-11 15:59:48
【问题描述】:
我是 node.js 的新手,我正在尝试发出 http 请求。我遵循了一个尝试调用 random.org 的教程。这是我的 app.js 文件:
var http = require('http');
//The url we want is: 'www.random.org/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
var options = {
host: 'www.random.org',
path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
};
callback = function(response) {
var str = '';
//another chunk of data has been recieved, so append it to `str`
response.on('data', function (chunk) {
str += chunk;
});
//the whole response has been recieved, so we just print it out here
response.on('end', function () {
console.log(str);
});
response.on('error', function () {
console.log("err");
});
}
http.request(options, callback).end();
所以,无论如何,当使用
运行这个文件时node app.js
我在控制台收到以下错误:
C:\Program Files\nodejs>node app.js
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect ETIMEDOUT
at errnoException (net.js:901:11)
at Object.afterConnect [as oncomplete] (net.js:892:19)
2 个问题:
1. 为什么我会出现超时错误(该网站工作 - 我检查了)
2. 无论如何 - 为什么我没有捕捉到这个错误,尽管我在响应中有一个错误监听器。
任何可能的帮助将不胜感激!
谢谢
【问题讨论】:
-
该代码至少在节点 0.8 中工作。要捕获请求中的错误
http.request().on('error'...)可能会起作用。 -
谢谢@AndreasHultgren!你解决了我一个问题——关于错误捕获。关于版本 - 我使用的是 0.10.13。这很重要吗?
-
既然请求已发送,请不要认为这很重要。试试下面@user568109 的建议
-
您是否尝试过对request 模块执行相同的请求?