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
използвай gzip.decompress(r.raw.read())   -  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