2012-10-12 20 views
46

Próbuję napisać aplikację NodeJS, która będzie rozmawiać z API REST OpenShift przy użyciu metody żądania w pakiecie https. Oto kod:Żądanie HTTPS w 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); 
}); 

Ale to daje mi błąd (kod statusu 500 jest zwracany). Kiedy zrobiłem to samo za pomocą zwijania w wierszu poleceń, otrzymuję poprawną odpowiedź z serwera:

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

Dostaję poprawną odpowiedź z serwera.

Czy coś jest nie tak z kodem?

Odpowiedz

45

Porównując co nagłówki curl i węzeł wysłał, stwierdziliśmy, że dodanie:

headers: { 
    accept: '*/*' 
} 

do options naprawił.


Aby zobaczyć, który wysyła nagłówki curl, można użyć -v argument.
curl -vIX GET https://openshift.redhat.com/broker/rest/api

W węźle, po prostu console.log(req._headers)req.end().


Szybka wskazówka: Można użyć https.get() zamiast https.request(). Ustawi on metodę na GET i zadzwoni pod numer req.end().

+0

Dziękujemy za 'curl -vIX GET' – btk

Powiązane problemy