我从一个正在使用的业务api获取gzip数据,但我无法将其解压缩为JS中的可读内容,尽管我使用C#进行了管理。
我的问题是 - 如何将收到的gzipped输入解压缩到字符串或json?
以下代码适用于C#:
using (HttpWebResponse response = (HttpWebResponse)WebRequest.Create(url).GetResponse())
{
using (GZipStream decompress = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReader reader = new StreamReader(decompress))
{
responseFromServer = reader.ReadToEnd();
}
}
}
我已经阅读了各种答案并尝试了一些库,但仍然无法在JS中解压缩(使用相同的URL)。
这是代码应该在JS中的地方:
var requestData = {
url: url,
headers: {
"Allow-Encoding": "gzip"
}
}
request.get(requestData, function(error, response, body) {
// compressed data is in body
});
我尝试过pako,zlib,但我可能没有正确使用它们。
[编辑] 我的一些尝试:
// Decode base64 (convert ascii to binary)
var strData = new Buffer(body).toString('base64');
// Convert binary string to character-number array
var charData = strData.split('').map(function (x) { return x.charCodeAt(0); });
// Turn number array into byte-array
var binData = new Uint8Array(charData);
// Pako magic
var data = pako.inflate(binData);
// Convert gunzipped byteArray back to ascii string:
var strData2 = String.fromCharCode.apply(null, new Uint8Array(data));
此代码在NodeJS应用程序中运行,我正在使用request package
由于