Comment utiliser requête http ou le module pour lire gzip page dans une chaîne
J'ai trouvé le module de demande en js ne peut pas gérer gzip ou gonfler le format de la réponse http correctement.
par exemple:
request({url:'some url'}, function (error, response, body) {
//if the content-encoding is gzip, the body param here contains binaries other than readable string. And even worse after you convert the body to buffer, u even can not gunzip it.
}
si je veux utiliser l'exemple de code dans officiel docs.
var request = http.get({ host: 'izs.me',
path: '/',
port: 80,
headers: { 'accept-encoding': 'gzip,deflate' } });
request.on('response', function(response) {
var output = fs.createWriteStream('izs.me_index.html');
switch (response.headers['content-encoding']) {
//or, just use zlib.createUnzip() to handle both cases
case 'gzip':
response.pipe(zlib.createGunzip()).pipe(output);
break;
case 'deflate':
response.pipe(zlib.createInflate()).pipe(output);
break;
default:
response.pipe(output);
break;
}
});
Le problème est que le code est écrit à la page web dans un fichier, j'espère que cela peut écrire la page dans une chaîne, afin que je puisse traiter la page. Je ne pouvais pas trouver toutes les classe comme "StringStream'.
Si quelqu'un a une idée sur ce,ça va être super.
Si createUnzip peut gérer à la fois gzip et à gonfler, pourquoi s'embêter à écrire le code supplémentaire? Est-il plus lent?
OriginalL'auteur user966085 | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
Tuyau de la réponse à l'gzip flux et de l'utiliser comme vous le feriez utiliser l'original de la réponse de l'objet.
Utiliser ce code à l'appui de deflate aussi:
if(res.headers['content-encoding'] == 'deflate') {output = zlib.createInflate(); res.pipe(output); }
Veuillez noter que l'en-tête touches sont minuscules node.js' http.demande - toutefois par la spécification ils sont insensibles à la casse. Donc, chaque fois à l'aide d'une autre demande-module assurez-vous que les en-têtes sont en minuscules ou de modifier le code ...
OriginalL'auteur Teemu Ikonen
exemple simplifié:
OriginalL'auteur Dawid
J'ai rencontré un problème similaire et je voulais continuer à utiliser le
request
bibliothèque au lieu du http intégré dans le module. J'ai discuté de deux méthodes de travail ici: http://nickfishman.com/post/49533681471/nodejs-http-requests-with-gzip-deflate-compression. L'un d'eux est similaire à @Teemu réponse, tandis que l'autre utilise des ruisseaux.OriginalL'auteur Nick Fishman
demande module gère le gzip réponses. Tout ce que nous avons à faire, c'est 'gzip' attribut dans les territoires palestiniens occupés. Pour une explication détaillée, veuillez visiter la ci-dessous linke. Là, j'ai clairement expliqué avec des exemples.
https://stackoverflow.com/a/38582506/5878471
OriginalL'auteur Sai Teja
Les réponses de @Dawid et @Teemu parfois de frein les caractères de la réponse dans le cas de l'encodage utf-8. Ce code fonctionne beaucoup mieux:
OriginalL'auteur Alexey Gusev