Python 如果请求的数据有时是gzip,有时不是gzip,如何使用pycurl?

Python 如果请求的数据有时是gzip,有时不是gzip,如何使用pycurl?,python,http,gzip,libcurl,pycurl,Python,Http,Gzip,Libcurl,Pycurl,我这样做是为了获取一些数据: c = pycurl.Curl() c.setopt(pycurl.ENCODING, 'gzip') c.setopt(pycurl.URL, url) c.setopt(pycurl.TIMEOUT, 10) c.setopt(pycurl.FOLLOWLOCATION, True) xml = StringIO() c.setopt(pycurl.WRITEFUNCTION, xml.write ) c.perform() c.close()

我这样做是为了获取一些数据:

c = pycurl.Curl()
c.setopt(pycurl.ENCODING, 'gzip') 
c.setopt(pycurl.URL, url)
c.setopt(pycurl.TIMEOUT, 10)   
c.setopt(pycurl.FOLLOWLOCATION, True)

xml = StringIO()

c.setopt(pycurl.WRITEFUNCTION, xml.write )

c.perform()
c.close()
我的URL通常是这样的:

http://host/path/to/resource-foo.xml
通常我会返回302指向:

http://archive-host/path/to/resource-foo.xml.gz
考虑到我已经设置了FOLLOWLOCATION,并对gzip进行了编码,所以一切都很好

问题是,有时我的URL不会导致重定向到Gzip资源。发生这种情况时,
c.perform()
抛出以下错误:

pycurl.error: (61, 'Error while processing content unencoding: invalid block type')
这对我来说意味着pycurl正在尝试压缩一个未被gzip压缩的资源

有没有什么方法可以让pycurl知道响应编码,以及gunzip是否合适?我已经尝试过使用不同的值进行
编码
,但到目前为止还没有bean

Pycull文档似乎有点缺少:/


谢谢

如果出现最坏的情况,您可以省略编码“gzip”,将HTTPHEADER设置为{'Accept-ENCODING':'gzip'},用于“Content ENCODING:gzip”,如果存在,请自行压缩响应。

curl不能自动解码吗?谢谢@Piskvor!我想我一定是在09年错过了你的答案。