2012-10-12 18 views
46

Sto provando a scrivere un'app NodeJS che parlerà con l'API REST di OpenShift utilizzando il metodo di richiesta nel pacchetto https. Ecco il codice:Richiesta HTTPS in 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); 
}); 

Ma questo mi sta dando un errore (codice di stato 500 viene restituito). Quando ho fatto la stessa cosa usando curl sulla riga di comando,

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

Ho ricevuto la risposta corretta dal server.

C'è qualcosa di sbagliato nel codice?

risposta

45

Confrontando ciò intestazioni arricciatura e nodo inviato, ho trovato che l'aggiunta di:

headers: { 
    accept: '*/*' 
} 

a options riparato.


per vedere quali intestazioni ricciolo manda, è possibile utilizzare l'argomento -v.
curl -vIX GET https://openshift.redhat.com/broker/rest/api

Nel nodo, appena dopo console.log(req._headers)req.end().


punta rapida: È possibile utilizzare https.get(), invece di https.request(). Imposta il metodo su GET e chiama per te req.end().

+0

Grazie per 'curl -vIX GET' – btk