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