Сжатие HttpWebRequest с помощью gzip

Я разрабатываю.NET 4.0 Консольное приложение в качествеSOAP Web Service клиент, который будет отправлять данные (POST) сторонним лицам. У меня нет контроля над веб-сервисом на стороне сервера. Третья сторона предоставилаWSDL's использовать, и я смог импортировать их и использовать их с разумным успехом. Однако существует требование сжать сообщение запроса, используяgzipи я не мог на всю жизнь понять, как это сделать, используя прокси-сервисы.

Эта тема здесь, в SO, я поверил, что, не имея контроля над клиентским и серверным кодом, запрос не может быть сжат. В результате этого я написал код в своем приложении, чтобы вручную создатьSOAP XML вXDocument объект; затем заполнил значения изWSDL объекты прокси-класса, которые я ранее использовал в своем клиентском приложении.

Первым требованием для этого клиента является отправка сообщения, сжатого черезgzip, После некоторого исследования я увидел ответы так же просто, как простоHttpRequestHeader.AcceptEncoding, "gzip, deflate" в заголовок запроса. К сожалению, это не сработало.

В настоящее время сертификат, который я получаю, не является настоящим сертификатом. Я пытаюсь сделать код как можно более надежным, прежде чем развертывать его в тестовой среде для проведения реального тестирования сервиса.

Есть ли способ сжать запрос через вызов прокси (wsdl)?Есть что-то, чего мне не хватает, чтобы правильно сжатьHttpWebRequest?Может ли быть что-то еще не так, что приведет к возвращению сообщения об ошибке?
Я ожидаю, что другое сообщение, касающееся аутентификации, будет недействительным, если сам запрос будет в порядке.Есть ли способ сжатия может быть сделано черезapp.config?

Следующий набор требований Я немного запутался в том, как справляться / что делать. При условии, что я установилContentType запроса, как (и что) добавить, чтобы добавитьcontent-transfer-encoding кусок к запросу? ЕслиContentType неверно, как мне добавить эту информацию?

Тип содержимого для SOAP Evenlope с вложением в кодировке MTOM должен быть «application / xop + xml», а кодирование передачи содержимого должно быть 8-разрядным.

Я прошел несколько итераций приведенного ниже кода, однако я считаю, что соответствующие фрагменты кода - это код в его простейшей форме. Пожалуйста, дайте мне знать, если есть другая информация, которая будет полезна.

Метод для создания HttpWebRequest:

private static HttpWebRequest CreateWebRequest(SoapAction action)
{
    string url = GetUrlAddress(action);

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

    request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
    request.Headers.Add("SOAPAction", action.ToString());
    request.ContentType = "application/xop+xml";
    request.Accept = "text/xml";
    request.Method = "POST";

    request.ClientCertificates.Add(/* Retrieve X509Certificate Object*/);

    return request;
}

Код для отправки запроса:

using (Stream stream = request.GetRequestStream())
{
    soapXml.Save(stream);
}

Код для получения ответа:
Вот как я получаю сообщение об ошибке, которая происходит

try
{
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
        using (StreamReader reader = new StreamReader(response, Encoding.Default))
        {
            File.AppendAllText(filePath, response.Headers.ToString());
            File.AppendAllText(filePath, reader.ReadToEnd());
        }
    }
}
catch (WebException ex)
{
    using (var stream = ex.Response.GetResponseStream())
    {
        using (var reader = new StreamReader(stream))
        {
            Console.WriteLine(reader.ReadToEnd());
        }
    }
}

Получено сообщение об ошибке:

Сообщение запроса должно быть отправлено с использованием сжатия HTTP (RFC 1952 - GZIP).

Ответы на вопрос(2)

Ваш ответ на вопрос