문제

I'm running Node.js on Heroku, and I have a simple test url set up on express to make a client request, but it crashes the application everytime and I'm not sure why.

I'm trying to make the server make a simple GET call to https://graph.facebook.com/btaylor

My related server.js contents:

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

This looks pretty straight forward, but it crashes the server everytime I visit server/test.

I know I'm hitting the right code, because if I remove for example the line "var http = ...", I'll get a "http not defined" as it tries to run http.createClient.

도움이 되었습니까?

해결책

Use the https module for node.js to connect to https websites. The way you do it is overly complicated for simple requesting data.

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

You might also consider using request.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top