VB.Net GZIP Base64 问题

问题描述 投票:0回答:0

我在 gzip 压缩和解压方面有问题。 需要从 wss 流发送和接收消息。

大家好

从 wss 流中,我得到 gzip base64 编码的消息。 我找到了一个可以正常工作并解码这些消息的函数:

    Public Function DecompressGzip(ByVal bytes As Byte()) As String
        Using ms = New MemoryStream(bytes)
            Using ds = New GZipStream(ms, CompressionMode.Decompress)
                Using sr = New StreamReader(ds, Encoding.UTF8)
                    Return sr.ReadToEnd()
                End Using
            End Using
        End Using
    End Function

还有一个压缩字符串的函数:

    Public Function CompressGzip(ByVal bytes As Byte()) As Byte()
        Using memoryStream = New MemoryStream()

            Using gzipStream = New GZipStream(memoryStream, CompressionLevel.Optimal)
                gzipStream.Write(bytes, 0, bytes.Length)
            End Using

            Return memoryStream.ToArray()
        End Using
    End Function

我的演示代码:

        Dim b64 As String = "eJx1U01v2zAM/S86q5i+bec2FB02YFiLdNil2EGzmUSoI2WSnGwL+t9HeknbZdiNenykSb7nI9v5umELViDvQw9vBvBjYZzVnztA+EAxYUv4PkGpbHFkfYql5qnHR5zGkWOLNXIFEtPWh/hhwEKNdfCjH6cBrn2FdcoBCls8NK3spNCSa2uFaISUXDqjrbAYtM4Jx5XUotXEaY3SggJnVGMosETp2rmBdI0zp0ZubiQ7J42biVJ0ys40IbpOcW1EaxUBytq2VbxphJr7yE4Z6eYMfs85rvFbjaKGWmCy4VJ1Vjgrv3IW4r8rIbzLeLvPeDJ6CwQGGKtf+kiHeZBYjluZxrTameacvoPcQ6xnlrvgFD9CweTjmXAl+RXN0E85v6ozTlxUbkNc+hrimi2whoXyMR1m7VaoLbwAt6sV5Ffo7YTQfU394zNYQx3hHnzuySSoaaCR1nAT/bcRUGg0wlz7LowV8gW8+gPmVEP/3LLgYCN88TngjCmeuRtflrAPgI57meguhy3ckI1K2OOyp8R2KvW938Pbrf+V4t9rUO5T+m+6pFxJKLbAywwo4+mMs2EPPsMmTQWuUxwCTUd6onm44ZYkgUpnRfDIaFRshL5/Qv0h380/gbT0DHgBjf5UnO0hl3lL/fQbVw4L0Q=="
        Dim bu As Byte() = Convert.FromBase64String(b64)
        Dim decompressed As String = DecompressGzip(bu)
        Console.WriteLine(decompressed)
        Console.WriteLine("Original: " & b64)
        Console.WriteLine("New: " & Convert.ToBase64String(CompressGzip(Encoding.UTF8.GetBytes(decompressed))))

如果我解码一条消息并再次对其进行 base64 编码(压缩),结果是不同的:

{"path":"service/deals","type":"ws","dealRequest":{"construct":null,"page":0,"domainId":"3","excludeCategories":[78191031,355007011,16435051,186606,213083031,84230031,64274031,5866098031,3167641,355006011,11961464031,10925031,300992,340852031,255882,77028031,192416031,284266,327472011,301927,12950651],"includeCategories":[],"priceTypes":[0],"deltaRange":[1950,2147483647],"deltaPercentRange":[60,2147483647],"salesRankRange":[-1,-1],"currentRange":[4600,2147483647],"minRating":-1,"isLowest":false,"isLowestOffer":false,"isOutOfStock":false,"titleSearch":"","isRangeEnabled":true,"isFilterEnabled":true,"filterErotic":false,"singleVariation":true,"hasReviews":false,"isPrimeExclusive":false,"mustHaveAmazonOffer":false,"mustNotHaveAmazonOffer":false,"sortType":1,"dateRange":"3","warehouseConditions":[2,3,4,5],"settings":{"viewTyp":0},"perPage":150},"id":33162,"version":3}

Original: eJx1U01v2zAM/S86q5i+bec2FB02YFiLdNil2EGzmUSoI2WSnGwL+t9HeknbZdiNenykSb7nI9v5umELViDvQw9vBvBjYZzVnztA+EAxYUv4PkGpbHFkfYql5qnHR5zGkWOLNXIFEtPWh/hhwEKNdfCjH6cBrn2FdcoBCls8NK3spNCSa2uFaISUXDqjrbAYtM4Jx5XUotXEaY3SggJnVGMosETp2rmBdI0zp0ZubiQ7J42biVJ0ys40IbpOcW1EaxUBytq2VbxphJr7yE4Z6eYMfs85rvFbjaKGWmCy4VJ1Vjgrv3IW4r8rIbzLeLvPeDJ6CwQGGKtf+kiHeZBYjluZxrTameacvoPcQ6xnlrvgFD9CweTjmXAl+RXN0E85v6ozTlxUbkNc+hrimi2whoXyMR1m7VaoLbwAt6sV5Ffo7YTQfU394zNYQx3hHnzuySSoaaCR1nAT/bcRUGg0wlz7LowV8gW8+gPmVEP/3LLgYCN88TngjCmeuRtflrAPgI57meguhy3ckI1K2OOyp8R2KvW938Pbrf+V4t9rUO5T+m+6pFxJKLbAywwo4+mMs2EPPsMmTQWuUxwCTUd6onm44ZYkgUpnRfDIaFRshL5/Qv0h380/gbT0DHgBjf5UnO0hl3lL/fQbVw4L0Q==

New: H4sIAAAAAAAEAHVTTW8TMRD9Lz67wt+7mxuqikBCNEorLlUPZjNprG7sYHsToOp/Z8Y0bSniZr95M5558/zA9r5u2YIVyIcwwrs1+KkwzurPPSB8pDNhK/g+Q6ls8cDGFEvN84iXOE8TxxJ3yBVITDsf4qc1JmrMgx/jNK/h3Fe4SzlAYYubrpeDFFpyba0QnZCSS2e0FRYPvXPCcSW16DVxeqO0oIMzqjN0sEQZ+lZAus6Zp0KuFZKDk8Y1ohSDso0mxDAoro3orSJAWdv3inedUK2OHJSRrkXwPee4xrc6RQW1wGDHpRqscFbechbivyMhvM+o3TVKRndxS5JN1a98JGFuJKbjVKYzvXamO4WXkEeI9cRybzjFT1AweH8inEl+Rj2Mc86v8owTbzJ3Ia58DfGOLTCHhfI5HdvuNrhbeAEuNxvIr9DLGaGrmsb7Z7CGOsEV+DySSRix2rsX0X+bABeNRmi5H8JUIb+BN3/AnGoYn0sWbGyCrz4H7DHFE3frywoOAdBxLx0tc9jBBdmohAM8B3ZzqR/9Ad7v/K8U/x6DYl/Sf8Ml5XrdvI3KrHGNTzI2wx59hm2aC5ynuA7UHe0TzcMNt7QSqCRroV9ArWIh9P0j7h/ysn0CaekaUAGN/lScHSCXNqV+/A3oTJx4bAMAAA==

你有解决这个问题的想法吗? 字节数组在解压和重新压缩后似乎有所不同。 我需要他们将其发送回 wss 流。

充满希望和感激的问候:)

gzip wss
© www.soinside.com 2019 - 2024. All rights reserved.