2012-10-12 25 views
46

Ich versuche, eine NodeJS-App zu schreiben, die mit der OpenShift-REST-API unter Verwendung der Anfrage-Methode im https-Paket sprechen wird. Hier ist der Code:HTTPS-Anfrage 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); 
}); 

Aber das gibt mir einen Fehler (Statuscode 500 wird zurückgegeben). Wenn ich dasselbe mit der Option "curl" in der Befehlszeile machte,

Ich erhalte die richtige Antwort vom Server.

Ist im Code etwas falsch?

Antwort

45

Vergleicht man, was headers curl und Knoten gesendet, fand ich, dass das Hinzufügen:

headers: { 
    accept: '*/*' 
} 

zu options es fixiert.


Um zu sehen, welche Header curl sendet, können Sie das -v Argument verwenden.
curl -vIX GET https://openshift.redhat.com/broker/rest/api

In Knoten, nur console.log(req._headers) nach req.end().


Quick-Tipp: Sie können mit https.get(), statt https.request(). Es setzt die Methode auf GET und ruft req.end() für Sie auf.

+0

Danke für 'curl -VIX GET' – btk