Node.js从节点服务器连接到远程服务器

我有一个Node.js应用程序,我想打一个远程API来获取一些date(即微博,微软的翻译服务,天气)。 从Node的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); }); 

我已经尝试过来自文档,twitter APIurl和其他几个网站的谷歌url,但是我能得到的唯一答案是:

 Got error: connect ECONNREFUSED 

使用wget相同的url给予满意,所以我知道该url是有效的。 我需要改变什么来获得从我的应用服务器到远程服务的成功连接?

要么

一些关于如何debugging的帮助会更好。 那么只有我可以从失败中得到的信息是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); 

我:“你确定通过为你的互联网连接设置的代理发送请求吗?

我:“不”

我:“做那个”

我:“好的,现在可行了”

  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); });