Данные, которые я отправляю с клиента VB.Net, являются большими и я хочу сжать. Я хочу сделать «POST», а сервер apache поддерживает mod_deflate. Я пытаюсь интегрировать DeflateStream в свой почтовый код, но, похоже, не работает.Сделайте HTTP-сообщение в .NET (Vb) со сжатыми данными с использованием 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. Мое лучшее предположение следующее, однако я не думаю, что он работает.
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 уплотненного Stream, если да, то как я могу получить это.
- Должен ли я записывать в поток данных или сжимать?
- Это как вы используете DataStream и DeflateStram вместе?
- На стороне сервера, если учесть, что апач автоматически предполагается обработка накачивания, как я знаю, что он работает (до сих пор, я знаю, нет раз экономии на моих сообщениях между двумя методами, используемых выше).
Почему вы не думаете, что это работает? –