Как сжать загруженные данные с помощью WebClient C # - PullRequest
1 голос
/ 01 сентября 2010

Я использую WebClient с C # следующий код работает нормально

wc = new WebClient();
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
NameValueCollection nvc = new NameValueCollection();
nvc.Add("webdata", JsonConvert.SerializeObject(webdata));
response = wc.UploadValues(@"http://localhost/api/results", "PUT", nvc);

Приложение, скорее всего, будет использоваться через мобильное соединение для передачи данных, поэтому, чтобы минимизировать затраты, я хотел бы убедиться, что данные сжаты, так как они все txt. Я использовал json вместо xml для уменьшения размера (и, возможно, мог бы изменить формат для дальнейшего сокращения накладных расходов)

Нужно ли мне сжимать данные вручную перед добавлением их в WebClient? или есть какой-то способ сказать WebClient, что мой веб-сервер может обрабатывать сжатие (или сжатие на веб-сервере работает только для загрузок?)

я запускаю apache / php на веб-сервере

заранее спасибо

1 Ответ

1 голос
/ 02 сентября 2010

Http-сжатие обычно используется только для ответов. Можно сжимать запросы, но не все веб-серверы будут принимать эти запросы и распаковывать их.

Вы пытались добавить к вашему запросу заголовок типа "Content-Encoding" и значения "gzip"?

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

не забудьте сбросить записи в потоки, иначе не все данные будут отправлены по проводам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...