2011-07-14 16 views
8
app.get('/', function(req, res){ 

var options = { 
    host: 'www.google.com' 
}; 

http.get(options, function(http_res) { 
    http_res.on('data', function (chunk) { 
     res.send('BODY: ' + chunk); 
    }); 
    res.end(""); 
}); 

});¿Cómo hacer llamadas al servicio web en Expressjs?

Intento descargar la página de inicio de google.com y volver a imprimirla, pero obtengo una "No se pueden usar las API de encabezado variable después de enviarlas". error

¿Alguien sabe por qué? o cómo hacer una llamada http?

Respuesta

33

Consulte el ejemplo here en el documento node.js.

El método http.get es un método conveniente, maneja muchas cosas básicas para una solicitud GET, que generalmente no tiene cuerpo. A continuación se muestra una muestra de cómo hacer una simple solicitud HTTP GET.

var http = require("http"); 

var options = { 
    host: 'www.google.com' 
}; 

http.get(options, function (http_res) { 
    // initialize the container for our data 
    var data = ""; 

    // this event fires many times, each time collecting another piece of the response 
    http_res.on("data", function (chunk) { 
     // append this chunk to our growing `data` var 
     data += chunk; 
    }); 

    // this event fires *one* time, after all the `data` events/chunks have been gathered 
    http_res.on("end", function() { 
     // you can use res.send instead of console.log to output via express 
     console.log(data); 
    }); 
}); 
+0

Enlace actualizado al último documento, esta página devuelve un alto en los resultados de google. – blu

+0

¿Esto no consumirá memoria si la respuesta es lo suficientemente grande? ¿No es mejor escribir los fragmentos de nuevo a la respuesta a medida que los obtiene? ¿Es eso posible? – chovy

+1

Si simplemente está procesando una solicitud, entonces la transmisión sí será el método preferido. –

Cuestiones relacionadas