Данные, которые я публикую с клиента 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()
Вопросы.
- Должен ли я отправлять ContentLength сжатого потока, если да, то как мне это получить.
- Должен ли я писать в поток данных или сжимать?
- Это то, как вы используете DataStream и DeflateStram вместе?
- На стороне сервера, учитывая, что apache автоматически обрабатывает раздувание, откуда мне знать, что он работает (пока что я знаю, что между двумя методами, использованными выше, нет экономии времени на моих сообщениях).