конструктор dict принимает аргументы ключевого слова:
>>> dict(foo=1, bar=2)
{'foo': 1, 'bar': 2}
Я просмотрел исходный код mod_gzip
и не смог найти никакого кода, который распаковывает данные . Очевидно, mod_gzip
сжимает только исходящие данные, что в конце концов не слишком удивительно. Функциональность, которую вы ищете, вероятно, используется редко, и я боюсь, что вам придется самостоятельно выполнять декомпрессию на сервере.
Что касается вашего вопроса, применимо ли Content-Encoding к заголовкам, предоставляемым клиентом - в соответствии со стандартом HTTP / 1.1 , это:
(из раздела 7)
Сообщения запроса и ответа МОГУТ передавать объект, если иное не ограничено методом запроса или кодом состояния ответа.
(из раздела 7.1)
entity-header = Allow; Раздел 14.7 | Content-Encoding; Раздел 14.11 | Content-Language; Раздел 14.12 | Content-Length; Раздел 14.13 | Контент-Местоположение; Раздел 14.14 | Content-MD5; Раздел 14.15 | Content-Range; Раздел 14.16 | Тип содержимого ; Раздел 14.17 | Истекает; Раздел 14.21 | Последнее изменение ; Раздел 14.29 | заголовок расширения
According to http://www.dominoexperts.com/articles/GZip-servlet-to-gzip-your-pages
You should setContentType() to the original format, as you are doing with the application/x-www-form-urlencoded I assume. Then...
// See if browser can handle gzip
String encoding=req.getHeader("Accept-Encoding");
if (encoding != null && encoding.indexOf("gzip") >=0 ) { // gzip browser
res.setHeader("Content-Encoding","gzip");
OutputStream o=res.getOutputStream();
GZIPOutputStream gz=new GZIPOutputStream(o);
gz.write(content.getBytes());
gz.close();
o.close();
} else { // Some old browser -> give them plain text. PrintWriter o = res.getWriter();
o.println(content);
o.flush();
o.close();
}
Вам необходимо изменить
req.Headers.Add("Content-Encoding: gzip");
на
req.Headers.Add("Content-Encoding","gzip");