1

我从 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 和 DeflateSram 的吗?
  4. 在服务器端,考虑到 apache 应该自动处理膨胀,我怎么知道它正在工作(到目前为止,我知道在上面使用的两种方法之间我的帖子没有节省时间)。
4

1 回答 1

0

此问题包含压缩请求的代码(隐含地回答您的 Q1、Q2 和 Q3)。

Q4:使用嗅探器检查线路上发送的数据。Fiddler2是免费的并且超级容易安装和使用。

对链接问题的回答解释了为什么 mod_deflate 在压缩请求方面不会成为您的朋友。

于 2010-02-17T08:45:45.750 回答