Comment puis-je ungzip (décompresser) un NodeJS demande du module gzip corps de la réponse?

Comment décompresser un format gzip corps à une demande du module de la réponse?

J'ai essayé plusieurs exemples à travers le web, mais aucun d'eux ne semble fonctionner.

request(url, function(err, response, body) {
    if(err) {
        handleError(err)
    } else {
        if(response.headers['content-encoding'] == 'gzip') {    
            //How can I unzip the gzipped string body variable?
            //For instance, this url:
            //http://highsnobiety.com/2012/08/25/norse-projects-fall-2012-lookbook/
            //Throws error:
            //{ [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }
            //Yet, browser displays page fine and debugger shows its gzipped
            //And unzipped by browser fine...
            if(response.headers['content-encoding'] && response.headers['content-encoding'].toLowerCase().indexOf('gzip') > -1) {   
                var body = response.body;                    
                zlib.gunzip(response.body, function(error, data) {
                    if(!error) {
                        response.body = data.toString();
                    } else {
                        console.log('Error unzipping:');
                        console.log(error);
                        response.body = body;
                    }
                });
            }
        }
    }
}
  • Ne pas le navigateur de manière transparente le faire?
  • J'ai ajouté de l'node.js tag, mais je reçois ce que ne précise pas... permettez-moi de modifier le post...
  • vous pouvez enregistrer les données dans un fichier req.gz et décompressez-le en ligne de commande? Si oui, qu'est-ce que la sortie de gunzip req.gz et file req.gz
  • Salut Andrew! Merci pour la suggestion. Si j'ai enregistrer le fichier à un "req.gz" fichier, extraire sur le bureau produit un fichier nommé "req.gz.cpgz". Extacting ce fichier à son tour produit un 3ème fichier namded "req. 2.gz". Le corps de la requête a été encodé en utf8 (la réponse.setEncoding('utf8')) avant la lecture du corps. Cependant, il ne semble pas faire une différence. Je reçois le même message d'erreur et similaires de bureau, le fichier de résultats.
  • demande 3.0 ajouter la prise en charge automatique pour cette fois nœud v0.10 vient de sortir
InformationsquelleAutor izk | 2012-08-27