English 中文(简体)
如何使用pycurl如果请求数据有时是gzip,有时不?
原标题:
  • 时间:2009-04-16 22:11:52
  •  标签:

我这样做来获取一些数据:

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试图gunzip不是gzip的资源。

有一些方法我可以指导pycurl找出响应编码,和gunzip或不适当的呢?我扮演着使用不同的值<代码>编码> < /代码,但到目前为止没有豆子。

pycurl文档似乎有点缺乏。:/

谢谢!

最佳回答

如果出现最坏的情况,你可以省略了gzip编码,设置HTTPHEADER{接受编码:gzip}, < a href = " https://stackoverflow.com/questions/472179/how-to-read-the-header-with-pycurl " > < / >检查响应标头为“内容编码:gzip”如果它年代,gunzip响应自己。

问题回答

暂无回答




相关问题
热门标签