Comment faire la demande HTTP Digest auth avec Node.JS?
Je dois écrire un peu de code avec Node.JS pour une documentation de l'API, mais j'ai essayé ces derniers jours, toutes les solutions que j'ai pu trouvé sur le web (y compris la Pile, bien sûr) sans succès...
Mon utilisation de l'API HTTP Digest Authentification et c'est ça le problème, j'ai été en mesure de se connecter, ce qui n'était pas une grosse affaire, mais à chaque fois j'ai eu le même retour :
Got response : 401
HTTP Digest Authentication required for "api.example.com"
Vous pouvez afficher ma base de code ci-dessous sans auth! Parce que je ne sais pas ce que je peux faire après toutes les essayer j'ai fait :
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);
});
});
Une de mes dernières essayez d'utiliser ce module https://npmjs.org/package/request mais il ne fonctionne pas trop, comme à chaque fois que j'ai eu 401 !
Pour plus d'informations, j'ai été en mesure de se connecter et d'OBTENIR les informations dont j'avais besoin sur mon API Ruby, Python, php, Java, donc je suis sûr que mon API travaille bien et les informations que je passe sont corrects.
J'utilise la dernière stable de Nœud v0.10.11 !
Si quelqu'un peut m'aider ou a une solution jusqu'à ce jour, je serai heureux.
EDIT :
Je vais ajouter quelques détails au sujet de mon test avec le module Mickael/demande
Premier Essai :
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)
}
});
Deuxième Essai :
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);
mais le retour est toujours le même 401
OriginalL'auteur Milo | 2013-06-14
Vous devez vous connecter pour publier un commentaire.
Voici l'exemple corrigé à utiliser
request
selon que c'est l'API.La demande chainable API de style est un peu déroutant (à mon humble avis), mais je crois que vous pouvez le faire fonctionner de cette façon.
Poster votre code à l'aide de
request
. "Je l'ai essayé et ça ne fonctionne pas" n'est pas suffisant pour nous de t'aider.J'ai été d'édition pour ajouter mon code à l'aide de la demande . merci pour votre aide 🙂
OK, la réponse de mise à jour. Essayez d'utiliser cette approche.
Salut désolé pour le retour tardif, mais j'ai essayé et ça ne marchait plus :/ Pour plus d'informations mon API est [Frapi]getfrapi.com
OriginalL'auteur Peter Lyons
Le digérer auth dans la trousse de demande semble être incomplète.
Vous pouvez essayer: https://npmjs.org/package/http-digest-client ,c'est un assez décent léger de la mise en œuvre de l'authentification digest.
Si vous avez besoin de faire un résumé auth POST avec un corps de message à envoyer, vous pouvez utiliser la demande en conjonction avec http digest-client. Après l'installation des deux il suffit d'ouvrir http digest-code client en vertu de nœud de modules et de les remplacer par son utilisation de la http paquet avec la trousse de demande de l'api.
OriginalL'auteur user1678598