js のリクエスト モジュールが gzip を処理できない、または形式の http 応答を正しくインフレートできないことがわかりました。
例えば:
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.
}
ということで、サンプルコードを公式ドキュメントで使いたいと思います。
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;
}
});
問題は、コードが Web ページをファイルに書き込んでいることです。ページを処理できるように、ページを文字列に書き込めることを願っています。「StringStream」のようなクラスが見つかりませんでした。
誰かがこれについて何か考えを持っているなら、それは素晴らしいことです.