Muszę napisać kod z Node.JS dla dokumentacji API, ale wypróbowałem przez ostatnie kilka dni wszystkie rozwiązania, które mogłem znaleźć w Internecie (w tym Stack oczywiście) bez sukcesu ...Jak zrobić żądanie uwierzytelnienia HTTP Digest za pomocą Node.JS?
Moje API użyj protokołu HTTP Digest auth i to jest problem, udało mi się połączyć, to nie było nic wielkiego, ale za każdym razem mam ten sam zwrot:
Got response : 401
HTTP Digest Authentication required for "api.example.com"
można pokazać mój kod bazowy poniżej bez uwierzytelniania! Bo nie wiem, co mogę zrobić po całej próbie zrobiłem:
var http = require('http')
var options = {
host: 'api.example.com',
path: '/example/1.xml',
};
var request = http.get(options, function(res){
var body = "";
res.on('data', function(data){
body += data;
})
res.on('end', function(){
console.log('Got response : ' + res.statusCode);
console.log(body);
})
res.on('error', function(e){
console.log('Got error : ' +e.message);
});
});
Jednym z mojej ostatniej próbie było użyć tego modułu https://npmjs.org/package/request ale nie działa zbyt, jak za każdym razem mam 401!
Aby uzyskać więcej informacji, udało mi się połączyć i uzyskać potrzebne informacje z mojego API za pomocą Ruby, Python, php i Java, więc jestem pewien, że moje API działa dobrze i informacje, które przekazuję są poprawne. Używam ostatniej stabilnej węzła v0.10.11!
Jeśli ktoś może mi pomóc lub ma rozwiązanie na czasie, będę zadowolony.
EDIT: dodam kilka szczegółów o moim teście z modułem Mickael/request
najpierw spróbować:
var request = require('request')
var options = {
'url': 'http://api.example.fr/example/1.xml',
'auth': {
'user': 'test',
'pass': 'test',
'sendImmediately': false
}
};
var request = request.get(options, function(error, response, body){
if (!error && response.statusCode == 200){
console.log('body : ' + body)
}
else{
console.log('Code : ' + response.statusCode)
console.log('error : ' + error)
console.log('body : ' + body)
}
});
drugie Spróbuj:
var request = require('request')
request.get('http://api.example.fr/example/1.xml', function(error, response, body){
if (!error && response.statusCode == 200){
console.log('body : ' + body)
}
else{
console.log('Code : ' + response.statusCode)
console.log('error : ' + error)
console.log('body : ' + body)
}
}).auth('test', 'test', false);
ale powrót jest wciąż ten sam 401
Dziękuję za sugestię, ale jak powiedziałem w moim oryginalnym wpisie, próbowałem tego rozwiązania, możesz znaleźć link na końcu mojego posta! – Milo
Zamieść swój kod za pomocą 'request'. "Próbowałem i to nie działało", nie wystarczy nam, abyśmy ci pomogli. –
Edytowałem, aby dodać mój kod za pomocą żądania. dziękuję za pomoc :) – Milo