httpWebRequest.AutomaticDecompression не устанавливает заголовок «Accept_Encoding: gzip» - PullRequest
1 голос
/ 01 февраля 2011

Я использую ссылку на веб-сервис в своем приложении .net 3.0 и пытаюсь настроить декодирование gzip.

Когда я использую SoapUI, ответы сжимаются с помощью gzip, поскольку в запросе установлен заголовок «Accept-Encoding: gzip, deflate». Когда мой запрос .net отправляется, он не имеет этого заголовка, поэтому сервер не сжимает ответ.

Я нашел эту ссылку , которая точно описывает, что я хочу сделать. Я реализовал код и проверил с помощью отладчика, что он выполняется при каждом запросе, но он по-прежнему не добавляет заголовок «Accept-Encoding: gzip».

Далее я добавил заголовок вручную в класс по ссылке.

httpWebRequest.Headers.Add("Accept-Encoding", "gzip");

Наконец-то я получил сжатый ответ от сервера! Но нет, теперь я получаю искаженное xml-исключение, которое, я уверен, объясняется тем, что ответ не распаковывается, даже если следующее установлено с помощью класса из ссылки.

httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip;;

Я не могу понять, что происходит не так.

1 Ответ

2 голосов
/ 01 февраля 2011

Хорошо, я нашел решение моей проблемы.

Поскольку я использую веб-ссылку, вы должны установить EnableDecompression = true для веб-ссылочного объекта.

Таким образом, решение является чем-токак это

var client = new ReferredService
                 {
                     EnableDecompression = true
                 }

где ReferredService - это имя веб-ссылки.

...