2011-12-01 77 views
0

我在Heroku上运行Node.js,并且我有一个简单的测试url在express上设置了一个客户端请求,但它每次都会崩溃应用程序,而我不是确定为什么。在Heroku上简单Node.js客户端请求崩溃

我试图使服务器做一个简单的GET调用https://graph.facebook.com/btaylor

我的相关内容server.js:

app.get('/test', function(request, response) { 
    var http = require('http'); 
    var test_client = http.createClient(443, "graph.facebook.com", true); 

    var facebook_request = test_client.request("GET", "/btaylor", { 
     "host":"graph.facebook.com" 
    }); 

    facebook_request.on('response',function(facebook_response){ 
     facebook_response.on('data',function(chunk){ 
      console.log(chunk); 
     }); 
     facebook_response.on('end', function() { 
      console.log("DONE"); 
     }); 
    }); 
    facebook_request.end(); 
}); 

这看起来非常简单的,但它崩溃的服务器,每次我访问服务器/测试。

我知道我打的是正确的代码,因为如果我删除了例如“var http = ...”这一行,我会在尝试运行http.createClient时得到一个“http not defined”。

回答

1

使用https模块为node.js连接到https网站。你这样做对于简单的请求数据来说过于复杂。

var express = require("express"); 
var app = express.createServer(); 

app.get('/test', function(request, response) { 
    var https = require('https'); 

    response.writeHead(200); 
    https.get({ host: 'graph.facebook.com', path: '/btaylor' }, function (res) { 
     console.log(res); 
     response.end(res.body); 
    }); 
}); 

app.listen(process.env.PORT); 

您也可以考虑使用request

+0

是的,我其实也是自己想出来的,几乎完全按照你自己的方式做了。我认为我之前的问题是我还没有结束最初的回应,所以它一直在等待回应完成。 –