就像在标题中描述的那样,我想解压缩HTTP-Resonse。 这是我的工作:
Last Point不起作用。我收到此错误:“GZip标头中的幻数不正确。请确保传入GZip流。”
你能告诉我我做错了什么吗?
编辑:由于还没有答案,我在这里发布我的解压缩代码:
public static byte[] Decompress_GZip(byte[] gzip)
{
using (GZipStream stream = new GZipStream(new MemoryStream(gzip),
CompressionMode.Decompress))
{
byte[] buffer = new byte[size];
using (MemoryStream memory = new MemoryStream())
{
int count = 0;
do
{
count = stream.Read(buffer, 0, size);
if(count>0)
{
memory.Write(buffer, 0, count);
}
}
while (count > 0);
return memory.ToArray();
}
}
}
我还想到了什么:结束可能有任何问题吗?也许GZip流不能处理网络字节顺序。
编辑: 至少我注意到,这个错误只是在收到chunked-messages时才会发生。让我们假设一个分块的消息看起来像这样:
STATUS-LINE
HEADER_1 /cr/n
...
HEADER_n /cr/n
/cr/n
CHUNK1_SIZE /cr/n
CHUNK1_DATA /cr/n
...
CHUNKn_SIZE /cr/n
CHUNKn_DATA /cr/n
0 /cr/n
这就是我的想法,我要做的就是解压缩消息:
CHUNK1_DATA
提取为CHUNKn_DATA
(不包含/cr/n
且不包含0
,最后一个块CHUNK1_DATA
... CHUNKn_DATA
与byte-array
byte-array
我真的很感激答案。
答案 0 :(得分:0)
好吧,我只是尝试了自己,它就像我在我的问题中描述的那样有效。如果您对我的代码感兴趣,只需推荐或给我写一条消息。