我有一个小的Node.js应用程序,我想点一个远程API来获取一些日期(即twitter,microsoft的翻译服务,天气)。从docs for Node's http我尝试将示例代码放入我的节点服务器应用程序中:
var options = {
host: 'www.google.com',
port: 80,
path: '/index.html'
};
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
我已尝试使用来自文档的google网址,推特API网址和其他几个网址,但我能得到的唯一回应是:
Got error: connect ECONNREFUSED
使用与wget
相同的网址会让人满意,因此我知道网址有效。为了从我的应用服务器到远程服务成功连接,我需要更改什么?
关于我如何调试它的一些帮助会更好。那么我只能从失败中得到的信息是ECONNREFUSED
。我尝试使用socket.io将错误响应转发到浏览器(在.on('error', function(e){...}
内),以便我可以使用webkit进行检查。不幸的是,错误对象只包含:
Object
error: Object
code: "ECONNREFUSED"
errno: "ECONNREFUSED"
syscall: "connect"
__proto__: Object
__proto__: Object
确定出错的方法并没有多大帮助。
作为参考,我的整个app.js
是:
var express = require('express') , http = require('http') , routes = require('./routes');
var app = module.exports = express.createServer();
var io = require('socket.io').listen(app)
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
app.get('/', function(req, res){
routes.index(req, res);
console.log(req.query);
var options = {
host: 'www.google.com',
port: 80,
path: '/index.html'
};
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
});
app.listen(4000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
答案 0 :(得分:4)
我:“您是否确定通过为您的互联网连接设置的代理发送请求?”
我是:“没有”我:“那样做”
我:“好的,现在可以了”
var options = {
host: '<proxyip>',
port: <proxyport>,
path: 'http://www.google.com/index.html'
};
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});