2010-02-17 6 views
1

Данные, которые я отправляю с клиента 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() 

Вопросы.

  1. Должен ли я быть отправки ContentLength уплотненного Stream, если да, то как я могу получить это.
  2. Должен ли я записывать в поток данных или сжимать?
  3. Это как вы используете DataStream и DeflateStram вместе?
  4. На стороне сервера, если учесть, что апач автоматически предполагается обработка накачивания, как я знаю, что он работает (до сих пор, я знаю, нет раз экономии на моих сообщениях между двумя методами, используемых выше).
+0

Почему вы не думаете, что это работает? –

ответ

0

This question содержит код, который застегивает запрос (что неявно отвечает на ваши Q1, Q2 и Q3).

Q4: Используйте сниффер для проверки данных, отправленных на провод. Fiddler2 является бесплатным и очень простым в установке и использовании.

Ответы на связанный вопрос объясняют, почему mod_deflate не будет вашим другом относительно сжатия запроса.

 Смежные вопросы

  • Нет связанных вопросов^_^