使用deflatestream使用压缩数据在.NET(Vb)中执行HTTP Post

时间:2010-02-17 00:29:52

标签: .net compression mod-deflate gzipstream deflatestream

我从VB.Net客户端发布的数据很大,我想压缩。 我想做一个“POST”,apache服务器支持mod_deflate。 我正在尝试将DeflateStream集成到我的邮政编码中,但似乎并没有起作用。

我可以使用标准代码无需压缩即可发送数据。

    request.ContentType = "application/x-www-form-urlencoded"

    Dim dataStream As Stream = request.GetRequestStream()
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(strEncodedXML)
    request.ContentType = "application/x-www-form-urlencoded"
    request.ContentLength = byteArray.Length
    dataStream.Write(byteArray, 0, byteArray.Length)
    dataStream.Close()
    Dim response As WebResponse = request.GetResponse()

但是我不确定如何使用Deflate Stream添加压缩。 我最好的猜测如下,但我认为它不起作用。

    request.Headers.Add("Content-Encoding", "deflate")
    request.ContentType = "application/x-www-form-urlencoded"

    Dim dataStream As Stream = request.GetRequestStream()
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(strEncodedXML)
    Dim compress As New DeflateStream(dataStream, CompressionMode.Compress, True)
    request.ContentType = "application/x-www-form-urlencoded"
    request.ContentLength = byteArray.Length
    dataStream.Write(byteArray, 0, byteArray.Length)
    dataStream.Close()
    Dim response As WebResponse = request.GetResponse()

问题。

  1. 我应该发送 压缩的ContentLength 流,如果是的话,我该怎么做。
  2. 我应该写入数据流吗? 还是压缩?
  3. 这是你如何使用的 DataStream和DeflateStram 一起?
  4. 在服务器端,考虑到apache自动应该处理膨胀,我该怎么做 知道它有效(到目前为止,我 知道我没有时间节省 使用两种方法之间的帖子 上文)。

1 个答案:

答案 0 :(得分:0)

This question包含压缩请求的代码(隐含地回答了您的Q1,Q2和Q3)。

问题4:使用嗅探器检查线路上发送的数据。 Fiddler2免费且易于安装和使用。

链接问题的答案解释了为什么mod_deflate不会成为关于压缩请求的朋友。