Pregunta

Estoy ejecutando Node.js en Heroku, y tengo una URL de prueba simple configurada en Express para hacer una solicitud de cliente, pero bloquea la aplicación cada vez y no estoy seguro de por qué.

Estoy tratando de hacer que el servidor haga una llamada simple para obtener https://graph.facebook.com/btaylor

Mi contenido relacionado de servidor.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();
});

Esto parece bastante sencillo, pero bloquea el servidor cada vez que visito el servidor/prueba.

Sé que estoy presionando el código correcto, porque si elimino, por ejemplo, la línea "var http = ...", obtendré un "http no definido" ya que trata de ejecutar http.createClient.

¿Fue útil?

Solución

Utilizar el https Módulo para Node.js para conectarse a sitios web HTTPS. La forma en que lo hace es demasiado complicado para los datos simples de solicitud.

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

También puede considerar usar solicitud.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top