2012-10-12 296 views
46

Estoy intentando escribir una aplicación NodeJS que se comunicará con la API REST de OpenShift utilizando el método de solicitud en el paquete https. Aquí está el código:Solicitud HTTPS en NodeJS

var https = require('https'); 

var options = { 
    host: 'openshift.redhat.com', 
    port: 443, 
    path: '/broker/rest/api', 
    method: 'GET' 
}; 

var req = https.request(options, function(res) { 
    console.log(res.statusCode); 
    res.on('data', function(d) { 
    process.stdout.write(d); 
    }); 
}); 
req.end(); 

req.on('error', function(e) { 
    console.error(e); 
}); 

Pero esto me da un error (se devuelve el código de estado 500). Cuando hice lo mismo usando curl en la línea de comando,

curl -k -X GET https://openshift.redhat.com/broker/rest/api 

Estoy recibiendo la respuesta correcta del servidor.

¿Hay algo incorrecto en el código?

Respuesta

45

Comparando lo que las cabeceras de rizos y el nodo enviado, he encontrado que la adición:

headers: { 
    accept: '*/*' 
} 

a options arreglado.


Para ver los encabezados de rizo envía, puede utilizar el argumento -v.
curl -vIX GET https://openshift.redhat.com/broker/rest/api

En nodo, justo después de console.log(req._headers)req.end().


Consejo rápido: Puede utilizar https.get(), en lugar de https.request(). Establecerá el método en GET, y llama al req.end() por usted.

+0

Gracias por 'curl -vIX GET' – btk

Cuestiones relacionadas