JavaScript:解压缩GZipped响应。在C#中工作而不是在JS中

时间:2015-07-26 12:53:03

标签: javascript gzip zlib compression

我从一个正在使用的业务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

由于

0 个答案:

没有答案