ошибка zlib -3 при чтении содержимого из ответа сервера

Я получаю ответ от сервера с кодировкой gzip, но не могу понять, как его расшифровать.

Я пытался использовать модуль zlib, но получаю сообщение об ошибке: zlib.error: Error -3 while decompressing data: incorrect header check

Это мой запрос:

r = requests.post(url=url,headers=headers,auth=auth,data=data)
print r.status_code
print r.headers
print zlib.decompress(r.content)

Печать, которую я получаю:

200 {'Content-Length': '1232', 'Content-Encoding': 'gzip', 'Accept-Ranges': 'bytes', 'X-Powered-By': 'PHP/5.5.38', 'Vary': 'Accept-Encoding', ...

Ошибка:

Traceback (most recent call last):
  File "C:/testing.py", line 27, in <module>
    print zlib.decompress(r.content)
zlib.error: Error -3 while decompressing data: incorrect header check

person Mumfordwiz    schedule 07.01.2017    source источник
comment
requests должен предоставить вам несжатый контент, поэтому вам не нужно использовать zlib.   -  person furas    schedule 07.01.2017
comment
сообщение Content-Type   -  person Nizam Mohamed    schedule 07.01.2017
comment
Запрос: 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'. Ответ: 'Content-Type': 'text/html'   -  person Mumfordwiz    schedule 07.01.2017
comment
requests распаковывает для вас. content уже должен быть распакован, и вы не можете распаковать его снова.   -  person tdelaney    schedule 07.01.2017
comment
ок.. посмотрю. Я получил текст, но часть его казалась сжатой. Вы, наверное, правы   -  person Mumfordwiz    schedule 07.01.2017
comment
сначала проверьте print r.content и print r.text - второй должен дать уже декодированный с использованием utf-8   -  person furas    schedule 07.01.2017
comment
@furas - хорошая мысль! r.text возвращает декодированные строки, а content — это просто bytes.   -  person tdelaney    schedule 07.01.2017
comment
Кодировки передачи gzip и deflate автоматически декодируются для вас. из requests док.   -  person Nizam Mohamed    schedule 07.01.2017
comment
вы можете распаковать r.raw.   -  person Nizam Mohamed    schedule 07.01.2017
comment
Кажется, не работает распаковка r.raw   -  person Mumfordwiz    schedule 07.01.2017
comment
используйте 1_   -  person Nizam Mohamed    schedule 07.01.2017
comment
обращаться к людям с @   -  person Nizam Mohamed    schedule 07.01.2017


Ответы (1)


Попробуйте zlib.decompress(r.content, 31) запросить декодирование gzip вместо декодирования zlib.

person Mark Adler    schedule 08.01.2017