常见问题

https://farm5.staticflickr.com/4290/35294660055_42c02b2316_k_d.jpg

文档的这一部分回答了有关请求的常见问题。

编码数据?

请求自动解压缩gzip编码的响应,并尽可能将响应内容解码为Unicode。

如果需要,还可以直接访问原始响应(甚至套接字)。

自定义用户代理?

请求允许您轻松地覆盖用户代理字符串以及任何其他HTTP头。

为什么不是httplib2?

克里斯·亚当斯对 Hacker News

httplib2是您应该使用请求的一部分:它作为客户机更受尊重,但没有很好的文档记录,而且对于基本操作仍然需要太多的代码。我很感激httplib2所做的,在构建一个现代的HTTP客户机时,存在大量的低级困难,但实际上,只是使用请求。Kenneth Reitz非常积极,他得到了简单事物应该简单的程度,而httplib2更像是一个学术练习,而不是人们应该用来构建生产系统的东西[1]。

披露:我在请求作者文件中列出了,但我可以为大约0.0001%的敬畏申请信用。

1。http://code.google.com/p/httplib2/issues/detail?ID=96是一个很好的例子:一个影响很多人的令人讨厌的bug,有一个修复方法可以用几个月,当我把它应用到一个分叉中,并通过它重击几个TB的数据时,效果很好,但是它花了一年多的时间才进入主干,甚至更长的时间才进入到Pypi中,在Pypi中,任何其他需要“httplib2”的项目都可以工作。NG版本。

python 3支持?

对!下面是正式支持的python平台列表:

  • Python 2.7

  • Python 3.4

  • Python 3.5

  • Python 3.6

  • Python 3.7

  • PyPy

什么是“主机名不匹配”错误?

这些错误发生在 SSL certificate verification 无法匹配服务器对其认为正在联系的主机名请求作出响应的证书。如果您确定服务器的SSL设置是正确的(例如,因为您可以使用浏览器访问该站点),并且您使用的是python 2.7,那么可能的解释是您需要服务器名称指示。

Server-Name-Indication sni是ssl的官方扩展,客户机告诉服务器它正在联系的主机名。这在服务器使用时很重要 Virtual Hosting . 当这些服务器托管多个SSL站点时,它们需要能够根据客户机连接的主机名返回适当的证书。

python3和python 2.7.9+在其SSL模块中包含对sni的本机支持。有关在python<2.7.9的请求中使用sni的信息,请参阅 Stack Overflow answer .